- Save Data
- Load Data
sudo su
cd ../../var/www/html
vi saveplayer.php
<?php
// 1. 서버 연결
$servername = "localhost";
$username = "phpmyadmin_user";
$password = "1234"
$dbname = "PLAYER_Database";
// Create Connection
$conn = new mysqli{$servername, $username, $password, $dbname};
// Check Connection
if($conn->connect_error){
die("Connection failed : " .$conn->connect_error);
}
// 2. Json Data를 받고, 문자열 객체로 반환 ( UNITY -> PHP )
$player_jsondata = $_POST['player']; // 던져진 데이터를 받음
$playerdata = json_decode{$player_jsondata, true}; // 문자열을 Json으로 변환 (true는 배열로 받아온다는 뜻)
// 3. 데이터베이스에 데이터 저장 ( PHP -> MySQL )
// 1) 쿼리문 작성
$name = $playerdata['Name'];
$score = $playerdata['Score'];
$playersql = "REPLACE INTO Player_Data (Name,Score) VALUES ('$name','$score');
// 2) 쿼리문 실행
$conn->query($playersql);
?>
REPLACE로
<?php
// 1. 서버 연결
$servername = "localhost";
$username = "phpmyadmin_user";
$password = "1234"
$dbname = "PLAYER_Database";
?>
// Create Connection
$conn = new mysqli{$servername, $username, $password, $dbname};
// Check Connection
if($conn->connect_error){
die("Connection failed : " .$conn->connect_error);
}
// 2. SQL에 정보 요청
// 1) 쿼리문 작성
$playername = $_POST['Name']; // 유니티에서 어떤 플레이어의 데이터를 가지고 올지
$playersql = "SELECT Score FROM Player_Data WHERE Name = '$playername'";
// 2) 쿼리문 실행
$result = $conn->query($playersql);
// 3. SQL에서 정보 가져오기 (mysqli 함수 assoc)
if($result->num_rows>0)
{
$row = $result->fetch_assoc();
echo "Score - {$row['Score']}";
}
else
{
echo "No Player Data";
}
// 4. 연결 종료
$conn->close();
?>
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GamePlayer
{
public string Name;
public int Score;
}
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WebServerObject : MonoBehaviour
{
GamePlayer player;
Dictionary<string, string> playerDic = new Dictionary<string, string>();
private void Start()
{
LoadData();
}
void SaveData()
{
player = new GamePlayer();
// 정보 입력
player.Name = "UNITY PLAYER";
player.Score = 120;
// 직렬화
string playerJson = JsonConvert.SerializeObject(player);
playerDic.Add("player", playerJson);
StartCoroutine(WebServerManager.GetWWWData("http://44.204.237.0/saveplayer.php", playerDic, GetString));
}
void LoadData()
{
string playerName = "UNITY PLAYER";
playerDic.Add("Name", playerName);
StartCoroutine(WebServerManager.GetWWWData("http://44.204.237.0/loadplayer.php", playerDic, GetString));
}
void GetString(string str)
{
Debug.Log(str);
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public static class WebServerManager
{
public static IEnumerator GetWWWData(string _path, Dictionary<string, string> Fields, Action<string> OutAction)
{
WWWForm form = new WWWForm();
foreach(string key in Fields.Keys)
form.AddField(key, Fields[key]);
using (UnityWebRequest www = UnityWebRequest.Post(_path, form))
{
yield return www.SendWebRequest();
if (www.result == UnityWebRequest.Result.ConnectionError ||
www.result == UnityWebRequest.Result.ProtocolError ||
www.result == UnityWebRequest.Result.DataProcessingError)
{
OutAction(www.error);
}
else
{
string str = www.downloadHandler.text;
str = str.Replace("<br>", System.Environment.NewLine);
OutAction(str);
}
}
}
}