首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在移动设备(Unity)中保存/管理游戏进度?

如何在移动设备(Unity)中保存/管理游戏进度?
EN

Stack Overflow用户
提问于 2018-09-25 13:33:52
回答 3查看 4.7K关注 0票数 0

目前,我正在将游戏进度保存在JSON格式的文件中。每次玩家完成关卡,一个新的条目将被添加到JSON文件中作为跟随"level_N":{"score":234,"points":22},,这个文件将被保存在关卡完成的末尾。考虑播放器达到级别2345左右的场景,在这种情况下,在某些移动设备中,保存到级别完成的文件需要相当长的时间。如何管理保存如此大量的数据?我必须使用其他格式吗?或者我必须将每个关卡详细信息保存在单独的文件中?

EN

回答 3

Stack Overflow用户

发布于 2018-10-02 01:18:46

PlayerPrefs是保存数据的最简单方法。它旨在处理基本数据类型(int、string、float),其工作方式类似于字典,因此您可以简单地将JSON字符串存储为键-值对。iOS和Android也没有大小限制( webplayer的大小限制为1MB)。

代码语言:javascript
复制
// read
PlayerPrefs.GetString(string key, string value);

// write
PlayerPrefs.SetString(string key, string value);

// load and update
const saveKey = "level_N";
Private void SaveProgress() 
{
    string saveValue = "your JSON string"; 
    string loadValue = PlayerPrefs.GetString(saveKey); 
    if (!saveValue.Equals(loadValue)) 
    {
        PlayerPrefs.SetString(saveKey, saveValue); 
        PlayerPrefs.Save();
    }
}

在OnApplicationQuit()过程中,用户数据将自动写入磁盘,但您可能希望使用PlayerPrefs.Save(),以防游戏崩溃。

话虽如此,在移动设备上将大量数据保存到PlayerPrefs可能会很慢。因此,如果您想要提高游戏性能或需要更多空间,可以使用Application.persistentDataPath将数据保存到设备上的公共目录中。与PlayerPrefs类似,更新应用程序时不会清除数据。

代码语言:javascript
复制
FileStream file = File.Open(Application.persistentDataPath + "/gameInfo.dat", FileMode.Open);
票数 2
EN

Stack Overflow用户

发布于 2018-09-25 14:15:47

您可以使用PlayerPrefs类来保存本地数据。

在您的例子中,您可以将json转换为string,然后调用PlayerPrefs.SetString保存/PlayerPrefs.GetString以获取。

票数 1
EN

Stack Overflow用户

发布于 2018-09-25 15:48:12

对于本地数据管理来说,PlayerPrefs总是一个很好的选择,但是如果你计划在你的游戏中添加在线功能,我建议你看看Firebase Realtime Database来同步离线支持的json数据。并让firebase管理移动设备上的性能问题。你可以看到如何轻松地将Firebase数据库集成到Here项目中。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52491198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档