如何将游戏状态存储到数据库中并使用php和c#脚本加载

如何将游戏状态存储到数据库中并使用php和c#脚本加载,c#,serialization,unity3d,C#,Serialization,Unity3d,我必须找到一种使用c#脚本和php从数据库中保存和加载游戏状态的方法。到目前为止,我能够将播放器位置存储到本地注册表中,但远程保存是个问题。有人知道我需要执行哪些步骤吗 using UnityEngine; using System.Collections; using System; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class SaveSystem : MonoBeha

我必须找到一种使用c#脚本和php从数据库中保存和加载游戏状态的方法。到目前为止,我能够将播放器位置存储到本地注册表中,但远程保存是个问题。有人知道我需要执行哪些步骤吗

using UnityEngine;
using System.Collections;
using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

public class SaveSystem : MonoBehaviour {

    // Use this for initialization
    public void SaveState () {
        BinaryFormatter bf = new BinaryFormatter ();
        FileStream file = File.Create (Application.persistentDataPath + "/PlayerData.dat");
        PlayerData data = new PlayerData ();

        data.posX = transform.position.x;
        data.posY = transform.position.y;
        data.posZ = transform.position.z;

        data.rotX = transform.eulerAngles.x;
        data.rotY = transform.eulerAngles.y;
        data.rotZ = transform.eulerAngles.z;

        bf.Serialize (file, data);
        file.Close ();

    }

    // Update is called once per frame
    public void LoadState () {
        if(File.Exists(Application.persistentDataPath + "/PlayerData.dat")){
            BinaryFormatter bf = new BinaryFormatter();
            FileStream file = File.Open(Application.persistentDataPath + "/PlayerData.dat", FileMode.Open);
            PlayerData data = (PlayerData) bf.Deserialize(file);
            file.Close();
            transform.position = new Vector3(data.posX, data.posY, data.posZ);
            transform.rotation = Quaternion.Euler(data.rotX, data.rotY, data.rotZ);
        }


         [Serializable]
    class PlayerData{
        public float posX;
        public float posY;
        public float posZ;

        public float rotX;
        public float rotY;
        public float rotZ;
    }

好的,所以我记不起正确的语法,但这里有一些东西让你开始,所以在你的服务器上创建一个php文件,并创建用于加载和保存的函数 创建并获取这样的变量

         if(isset($GET_["save"]){
          SaveFunctionName();
          }
现在,当您要向服务器发送数据并调用此函数时,请执行以下操作:

   public string url = "Your server url?ur get variable name";
              IEnumerator Start() {
              WWWForm form = new WWWForm();
              form.AddBinaryData("fileUpload", bytes);
               WWW w = new WWW(screenShotURL, form);
               yield return w;
              } 

请确保从php返回一个字符串到w中,以检查数据是否保存。

到目前为止,我找到了一种将播放器位置X、Y、Z和旋转X、Y、Z存储到数据库的方法Unity C#脚本看起来像这样,这是实现它的最有效方法吗

[Serializable]
    class PlayerData{
        public float posX;
        public float posY;
        public float posZ;

        public float rotX;
        public float rotY;
        public float rotZ;

    }

public void SaveState () {
        PlayerData data = new PlayerData ();

        data.posX = transform.position.x;
        data.posY = transform.position.y;
        data.posZ = transform.position.z;

        data.rotX = transform.eulerAngles.x;
        data.rotY = transform.eulerAngles.y;
        data.rotZ = transform.eulerAngles.z;
        //data.posX.ToString ();
        //player = new Player ();


        WWWForm form = new WWWForm();
        form.AddField("positionX", data.posX.ToString ());
        form.AddField("positionY", data.posY.ToString());
        form.AddField("positionZ", data.posZ.ToString());
        form.AddField("rotateX", data.rotX.ToString());
        form.AddField("rotateY", data.rotY.ToString());
        form.AddField("rotateZ", data.rotZ.ToString());
        WWW w = new WWW("http://localhost:8080/player.php", form);
        StartCoroutine(saved(w));
        //bf.Serialize (file, data);
        //file.Close ();


IEnumerator saved(WWW w)
{
    yield return w;
    if (w.error == null)
    {
        if (w.text == "login-SUCCESS")
        {
            print("WOOOOOOOOOOOOOOO!");
        }
        else
            message += w.text;
    }
    else
    {
        message += "ERROR: " + w.error + "\n";
    }
}       
}

在我的服务器上创建一个名为player的php文件,该文件将我的player状态保存在数据库中

    <?PHP

$positionX = $_POST['positionX'];
$positionY = $_POST['positionY'];
$positionZ = $_POST['positionZ'];
$roX = $_POST['rotateX'];
$roY = $_POST['rotateY'];
$roZ = $_POST['rotateZ'];

$con = mysql_connect("localhost","root","usbw") or ("Cannot connect!"  . mysql_error());
if (!$con)
    die('Could not connect: ' . mysql_error());

mysql_select_db("game" , $con) or die ("could not load the database" . mysql_error()); 



//$pass = md5($pass);
$ins = mysql_query("INSERT INTO  `player` (  `Player_ID`, `positionX` ,  `positionY` ,  `positionZ` ,  `rotateX` ,  `rotateY` ,  `rotateZ`) VALUES ('' , '".$positionX."' ,  '".$positionY."' ,  '".$positionZ."',  '".$roX."' ,  '".$roY."' ,  '".$roZ."') ; ");
        if ($ins)
            die ("Succesfully Created User!");
        else
            die ("Error: " . mysql_error());
    ?>