1. AWS 서버 및 MySQL 데이터베이스 설정
1) EC2 인스턴스 설정
A. EC2 인스턴스 시작
- AWS 관리 콘솔로 이동
- EC2로 이동하여 새 인스턴스를 시작
- Ubuntu Server와 같은 Amazon 머신 이미지(AMI)를 선택
- 인스턴스 유형을 선택(예: 무료 등급의 경우 t2.micro).
- 인스턴스 세부 정보를 구성하고 필요에 따라 스토리지를 추가
- HTTP(포트 80), HTTPS(포트 443) 및 MySQL(포트 3306)을 허용하도록 보안 그룹을 구성
- 인스턴스를 시작하고 SSH를 사용하여 연결
2) LAMP 스택 설치
A. 패키지 목록 업데이트
sudo apt update
B. 아파치 설치
sudo apt install apache2
sudo systemctl start apache2
sudo systemctl enable apache2
C. MySQL 설치
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
D. 보안 MySQL 설치
sudo mysql_secure_installation
E. PHP 설치
sudo apt install php libapache2-mod-php php-mysql
sudo systemctl restart apache2
3) phpMyAdmin 설치 및 구성
A. phpMyAdmin 설치
sudo apt install phpmyadmin
B. phpMyAdmin을 제공하도록 Apache 구성
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
C. Apache 다시 시작
sudo systemctl restart apache2
2. phpMyAdmin을 사용하여 MySQL 데이터베이스 및 테이블 생성
1) phpMyAdmin에 액세스
- 웹 브라우저를 열고 http:///phpmyadmin으로 이동
2) 데이터베이스 생성
- phpMyAdmin에 로그인

- 데이터베이스 생성

3) 테이블 생성
- 생성된 데이터 베이스 선택
- 테이블 생성 ( 이름 : players )

3. Unity에서 GamePlayer 클래스 생성 및 테스트
1) GamePlayer 클래스 정의
public class GamePlayer
{
public string Name;
public int Score;
}
2) 데이터 직렬화 후 서버로 보내기
using UnityEngine;
using System.Collections;
public class GameManager : MonoBehaviour
{
public GamePlayer player;
void Start()
{
player = new GamePlayer("PlayerOne", 1500);
string jsonData = JsonUtility.ToJson(player);
Debug.Log("Serialized JSON: " + jsonData);
StartCoroutine(SendDataToServer(jsonData));
}
private IEnumerator SendDataToServer(string jsonData)
{
string url = "https://<your-ec2-public-ip>/save_player_data.php";
WWWForm form = new WWWForm();
form.AddField("playerData", jsonData);
using (UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Post(url, form))
{
yield return www.SendWebRequest();
if (www.result != UnityEngine.Networking.UnityWebRequest.Result.Success)
{
Debug.LogError(www.error);
}
else
{
Debug.Log("Player data successfully sent to the server.");
}
}
}
}
4. 데이터 저장 및 로드를 위한 PHP 스크립트 만들기
1) 데이터 저장을 위한 PHP 스크립트 (save_player_data.php)
<?php
$servername = "localhost";
$username = "your_db_username";
$password = "your_db_password";
$dbname = "game_database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$playerData = $_POST['playerData'];
$player = json_decode($playerData, true);
$Name = $player['Name'];
$score = $player['score'];
$stmt = $conn->prepare("INSERT INTO players (name, score) VALUES (?, ?) ON DUPLICATE KEY UPDATE score=?");
$stmt->bind_param("sii", $Name, $score, $score);
if ($stmt->execute()) {
echo "Player data saved successfully";
} else {
echo "Error: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>
2) 데이터를 로드하는 PHP 스크립트 (load_player_data.php)
<?php
$servername = "localhost";
$username = "your_db_username";
$password = "your_db_password";
$dbname = "game_database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$Name = $_GET['Name'];
$stmt = $conn->prepare("SELECT name, score FROM players WHERE name = ?");
$stmt->bind_param("s", $Name);
$stmt->execute();
$stmt->bind_result($Name, $score);
$player = array();
if ($stmt->fetch()) {
$player['Name'] = $Name;
$player['score'] = $score;
}
echo json_encode($player);
$stmt->close();
$conn->close();
?>
5. Unity에서 데이터 가져오기
using UnityEngine;
using System.Collections;
public class GameManager : MonoBehaviour
{
public GamePlayer player;
void Start()
{
StartCoroutine(LoadDataFromServer("PlayerOne"));
}
private IEnumerator LoadDataFromServer(string playerName)
{
string url = "https://<your-ec2-public-ip>/load_player_data.php?Name=" + playerName;
using (UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(url))
{
yield return www.SendWebRequest();
if (www.result != UnityEngine.Networking.UnityWebRequest.Result.Success)
{
Debug.LogError(www.error);
}
else
{
string jsonData = www.downloadHandler.text;
player = JsonUtility.FromJson<GamePlayer>(jsonData);
Debug.Log("Player data loaded: " + jsonData);
}
}
}
}