欢迎光临
我们一直在努力

【Unity开发】数据存储系统PlayerPrefs和文件读写

请添加图片描述

🐾 个人主页 🐾

阿松爱睡觉,横竖醒不来

🏅你可以不屠龙,但不能不磨剑🗡


文章目录

  • 一、前言
  • 二、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)的文件系统访问方式可能有所不同,这里需要特别注意。
  • 数据安全和隐私:确保遵守相关法律法规,特别是处理用户数据时。
  • 性能考虑:在保存和读取大量数据时,要注意对游戏性能的影响。

请添加图片描述 请添加图片描述

赞(0)
未经允许不得转载:171主机测评 » 【Unity开发】数据存储系统PlayerPrefs和文件读写
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址