这是【Unity3D 教程系列第 15 篇】,如果觉得有用的话,欢迎关注专栏。
- 一:什么是 PlayerPrefs 类
- 二:PlayerPrefs 类中的静态方法
- 1:写入数据
- 2:读取数据
- 3:删除数据
- 4:检查数据
- 5:保存数据
- 三:Windows 和 Mac系统 PlayerPrefs 的储存位置
作用 Unity3d提供的用于本地数据持久化保存与读取的类。
工作原理 以“键值对”的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值(windows和ios系统的保存路径不一样,见文末)。
二:PlayerPrefs 类中的静态方法PlayerPrefs 类目前只支持3种数据类型的保存和读取,分别是浮点型(float),整型(int),字符串型(string)。
写入数据:SetFloat(),SetInt(),SetString() 读取数据:GetFloat(),GetInt(),GetString() 删除数据:DeleteKey(),DeleteAll() 检查数据:HasKey() 强制保存数据:Save()
这些函数的用法基本一致使用 Set 进行保存,使用 Get 进行读取。所有的 key(键) 都是 string 类型,value(值)取决于你用的类型。
举例说明
1:写入数据 void Awake()
{
//存取数据
PlayerPrefs.SetFloat("鸣人", 18.5f); //写入浮点型
PlayerPrefs.SetInt("佐助",17); //写入整型
PlayerPrefs.SetString("苏", "程序人生道可道");//写入字符串型
}
2:读取数据
void Start()
{
//读取数据
Debug.Log(PlayerPrefs.GetFloat("鸣人")); //读取浮点型
Debug.Log(PlayerPrefs.GetInt("佐助")); //读取整型
Debug.Log(PlayerPrefs.GetString("苏")); //读取字符串类型
}
运行u3d,结果如下图所示 如果我们获取一个不存在的 key 返回的是 null 吗? 答:不是,当我们尝试获取一个不存在的 Key 时,float,int 类型的会返回默认值0,string类型的返回默认值空字符串,而不是 null。 不过,unity允许存入默认数值,所以在读取数值的时候,返回默认数值的情况有两种,一种是因为不存在该 Key 值,另一种是因为自己存入了默认值。
PlayerPrefs.DeleteKey("鸣人"); //删除指定key对应的值
PlayerPrefs.DeleteAll(); //删除所有数据
4:检查数据
void Start()
{
if (PlayerPrefs.HasKey("鸣人"))
{
Debug.Log("执行功能");
}
}
5:保存数据
PlayerPrefs.Save();
unity会为我们自动保存数据,当然你也可以调用 Save() 函数进行强制保存。
三:Windows 和 Mac系统 PlayerPrefs 的储存位置以下内容来自百度
1:Windows: PlayerPrefs 被存储在注册表的 HKCU\Software[company name][product name]键下。 打开“运行”输入 regedit 打开注册表),这里 company 和 product 名是在 Project Setting 中设置的,是持久本地化存储。
2:Mac PlayerPrefs 存储在~/Library/PlayerPrefs文件夹,名为 unity.[company name].[product name].plist。 这里 company 和 product 名是在 Project Setting 中设置的,相同的 plist 用于在编辑器中运行的工程和独立模式 (打开 Find,按住 Option 键,点击“前往 →“资源库”,就可以找到 Preferences 文件夹). 。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语 技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。 最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。