Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在Unity游戏中保存数据的最佳方法_Json_Unity3d_Persistence_Unity5_Saving Data - Fatal编程技术网

Json 在Unity游戏中保存数据的最佳方法

Json 在Unity游戏中保存数据的最佳方法,json,unity3d,persistence,unity5,saving-data,Json,Unity3d,Persistence,Unity5,Saving Data,我在想。。。在Unity游戏中保存数据的最佳方式是什么。杰森?如果是,怎么做?谢谢以下是Unity项目保存数据的一些不同方式和方法: 独立于平台:以独立于平台的方式在Unity3D中保存数据的一种方法是使用类。(了解更多信息,,)。PlayerPrefs是一个静态类,很容易使用,但不可靠 持久化-使用DontDestroyOnLoad、PlayerPrefs和数据序列化保存和加载数据 服务器端:您还可以使用服务器来保存数据(如PHP和MySQL数据库的组合)。您可以使用它保存分数数据、用户配

我在想。。。在Unity游戏中保存数据的最佳方式是什么。杰森?如果是,怎么做?谢谢

以下是Unity项目保存数据的一些不同方式和方法:

  • 独立于平台:以独立于平台的方式在Unity3D中保存数据的一种方法是使用类。(了解更多信息,,)。PlayerPrefs是一个静态类,很容易使用,但不可靠

  • 持久化-使用DontDestroyOnLoad、PlayerPrefs和数据序列化保存和加载数据

  • 服务器端:您还可以使用服务器来保存数据(如PHP和MySQL数据库的组合)。您可以使用它保存分数数据、用户配置文件等,从中了解更多信息

  • 要将游戏中的数据以稍后可以理解和加载的格式保存到硬盘,请使用名为序列化的.NET/Mono功能

  • 关于Unity的SimpleJSON指南可从网站或官方网站获得,您可以查看

  • SQLite应用程序的嵌入式数据库)是另一个很好的选择,如果你懂SQL,它简单易行(也是我最喜欢的)

  • 它是一个数据容器。对于不变的数据很有用。适用于大数据的清除和安全项目内存的恢复


  • 以上内容摘自我的。

    您可以使用许多在资产存储中免费和付费的资产

    -XML和JSON保存和加载

    语法:

    Saver.Save(T数据,字符串文件名);
    
    例如:

    Saver.Save(myData,“myData”);//.json扩展名将自动添加
    
    -二进制保存和加载。又快又安全。易于使用

    语法:

    SaveGame.Save(T数据,字符串标识符);
    
    例如:

    SaveGame.Save(score,“score”);
    
    如果您想在服务器中存储数据,有一种使用PHP和MySQL的简单方法。你要做的是:

    第一步:
    只需一个字符串即可从服务器获取所需的数据(代码如下所示):

    第四步:
    您刚刚从数据库检索到数据,请检查unity console中的图像:


    我为那些可能像我一样陷入数据库问题的人做了这个

    假设我有几个事件一个接一个地发生,这些事件将通过web服务器不时更新,要在设备中保存所有事件数据,我应该使用什么?序列化、保存所有事件的数据并稍后更新数据是否正常?我所看到的只是保存和加载&在序列化tutuorials中没有编辑或更新。它会清理旧数据来保存新数据吗?@Zoedia我想你最好单独问一些重要的细节问题。所以也许我能理解并回答一个很好的答案,很遗憾地看到#1项玩家优先权这导致人们将数据保存在不安全的地方。但答案仍然非常清楚。@JeroenDeClercq#1是unity应用程序中最容易保存数据的。我不知道它是否不安全。如果有人想在没有第三方库的情况下使用JSON路径,Unity有一些官方JSON序列化工具,我认为您的代码中的
    $reuslt
    (三个实例)是一个打字错误。顺便说一句,当您看到发送给您的消息时,请务必回复它们。我已经否决了这个问题,一旦你回答了,我就不再投票。请愿意在必要时进行编辑,以造福未来的读者。对不起,我刚刚在做一个非常严肃的项目,我只是在可能的时候过来,顺便说一句,对于编辑人,我会改革它。。。
    <?php
    
    //SERVER CONNECTION 
    $server_name = "localhost";
    $server_user = "Er.Ellison";
    $server_pass = "supersecretPassword";
    $server_db   = "game_test_db";
    
    $connection = new mysqli($server_name , $server_user , $server_pass , $server_db);
    if(!$connection) {
      die("Connection failed !" . mysqli_connect_error());
    }
    
    // QUERY
    $query = "SELECT * FROM items";
    $result = mysqli_query($connection , $query);
    
    if(mysqli_num_rows($result) > 0){
      while($row = mysqli_fetch_array($result)){
        echo "id:" . $row['id'] . "|username:" . $row['username'] . "|type:" . $row['type'] . "|score:" . $row['score'] . ";";
      }
    } 
    ?>
    
    public class DataLoader : MonoBehaviour {
    
    
    public string[] items;
    
    
    // Use this for initialization
    IEnumerator Start () {
        WWW itemsData = new WWW ("http://localhost/_game/test/itemsdata.php");  
        yield return itemsData;
        string itemsDataStrign = itemsData.text;
        print (itemsDataStrign);
        items = itemsDataStrign.Split (';');
        print (GetDataValue(items[0] , "cost:"));
    }
    
    string GetDataValue(string data, string index) {
        string value = data.Substring (data.IndexOf(index) + index.Length);
        if (value.Contains ("|")) {
            value = value.Remove (value.IndexOf("|"));
        }
        return value; 
    }
    
    }