栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Unity中保存/加载数据

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Unity中保存/加载数据

使用C#序列化程序时,此问题是已知的。使用将数据转换为Json,

JsonUtility
然后将其保存
PlayerPrefs
。加载时,加载,
PlayerPrefs
然后将json转换回class
JsonUtility

要保存的示例类:

[Serializable]public class Save{    public List<int> ID = new List<int>();    public List<int> Amounts = new List<int>();    public int extra = 0;    public float highScore = 0;}

保存数据

void Save(){    Save saveData = new Save();    saveData.extra = 99;    saveData.highScore = 40;    //Convert to Json    string jsonData = JsonUtility.ToJson(saveData);    //Save Json string    PlayerPrefs.SetString("MySettings", jsonData);    PlayerPrefs.Save();}

加载数据

void Load(){    //Load saved Json    string jsonData = PlayerPrefs.GetString("MySettings");    //Convert to Class    Save loadedData = JsonUtility.FromJson<Save>(jsonData);    //Display saved data    Debug.Log("Extra: " + loadedData.extra);    Debug.Log("High Score: " + loadedData.highScore);    for (int i = 0; i < loadedData.ID.Count; i++)    {        Debug.Log("ID: " + loadedData.ID[i]);    }    for (int i = 0; i < loadedData.Amounts.Count; i++)    {        Debug.Log("Amounts: " + loadedData.Amounts[i]);    }}

JsonUtility.FromJson
和之间的区别
JsonUtility.FromJsonOverwrite

JsonUtility.FromJson
从Json创建新的Object并返回它。它分配内存。

string jsonData = PlayerPrefs.GetString("MySettings");//Convert to Class. FromJson creates new Save instanceSave loadedData = JsonUtility.FromJson<Save>(jsonData);

JsonUtility.FromJsonOverwrite
没有
创建新的对象。它与向类中添加更多数据类型无关。它只是覆盖其中传递的数据。这对于节省内存和减少GC很有用。唯一的一次,如果当你拥有领域,因为它会分配内存
array
string
List

JsonUtility.FromJsonOverwrite
使用Json进行恒定数据传输时,应使用示例。它将提高性能。

//Create Save instance **once** in the Start or Awake functionSave loadedData = null;void Start(){    //loadedData instance is created once    loadedData = new Save();}void Load(){    string jsonData = PlayerPrefs.GetString("MySettings");    //Convert to Class but don't create new Save Object. Re-use loadedData and overwrite old data in it    JsonUtility.FromJsonOverwrite(jsonData, loadedData);    Debug.Log("High Score: " + loadedData.highScore);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/615351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号