🐾 个人主页 🐾
阿松爱睡觉,横竖醒不来
🏅你可以不屠龙,但不能不磨剑🗡
文章目录
- 一、前言
- 二、PlayerPrefs
- 三、本地文件系统
一、前言
在Unity开发中,数据的存储和读取是必要不可或缺的,以便在下次打开应用时能够访问上次退出时的数据,接着上次退出的状态继续使用,通常有几种常见的方法:PlayerPrefs、文件写入等,下面来一一的讲一下。

二、PlayerPrefs
PlayerPrefs又叫玩家偏好设置,对于简单的键值对数据,比如 挑战关卡数、游戏设置等,可以使用Unity内置的PlayerPrefs系统。这是一个比较简单的数据存储系统,主要用于在玩家的设备上保存和加载数据——一些简单的数据。
下面看下具体的实现代码。代码比较简单,保存数据和读取数据。
保存数据:只能保存三种类型的数据:字符串、整形、浮点型。没错,不能保存布尔值类型,所以你要保存布尔值类型的话,只能使用整形的0和1代替。
//存储整数,参数1:存储数据的键名;参数2:要存储的值
PlayerPrefs.SetInt("CurrentLevel", currentLevel);
PlayerPrefs.SetString("CurrentStr", currentStr);
PlayerPrefs.GetFloat("CurrentHP", currentHP);
PlayerPrefs.Save(); // 通常在Unity中,PlayerPrefs会在适当的时候自动保存,但显式调用Save可以确保数据立即写入硬盘。
读取数据:
int currentLevel = PlayerPrefs.GetInt("CurrentLevel", 0); // 第二个参数是默认值,如果找不到键则返回这个值。
string currentStr= PlayerPrefs.SetString("CurrentStr", "今天天气真不错!");
float currentHP= PlayerPrefs.GetFloat("CurrentHP", 100);
删除数据:
PlayerPrefs.DeleteAll(); //从偏好中删除所有键和值。需要谨慎使用
PlayerPrefs.DeleteKey(); //移除指定的键。如果该键不存在,则不会产生任何影响。
三、本地文件系统
对于更复杂的数据,如玩家进度、游戏存档等,可以使用本地文件系统搭配JsonUtility来存储数据。Unity支持对玩家设备上的文件系统进行读写操作,但是需要注意平台差异以及权限问题。
保存数据(示例为JSON格式):
// 假设有一个包含玩家数据的类
PlayerData playerData = new PlayerData { Level = 10, Position = new Vector3(1, 2, 3) };
// 将对象序列化为JSON字符串
string jsonData = JsonUtility.ToJson(playerData);
// 将JSON字符串写入文件
using (StreamWriter writer = new StreamWriter(Application.persistentDataPath + "/playerData.json"))
{
writer.Write(jsonData);
}
读取数据:
if (File.Exists(Application.persistentDataPath + "/playerData.json"))
{
string jsonData = File.ReadAllText(Application.persistentDataPath + "/playerData.json");
PlayerData playerData = JsonUtility.FromJson<PlayerData>(jsonData);
// 现在可以使用playerData中的数据了
}
注意事项
- 平台差异:不同平台(如iOS、Android、Windows)的文件系统访问方式可能有所不同,这里需要特别注意。
- 数据安全和隐私:确保遵守相关法律法规,特别是处理用户数据时。
- 性能考虑:在保存和读取大量数据时,要注意对游戏性能的影响。


