【Unity3D 教程系列第 15 篇】本地数据持久化之 Playerprefs 类
这是【Unity3D 教程系列第 15 篇】,如果觉得有用的话,欢迎关注专栏。
文章目录
- 一:什么是 PlayerPrefs 类
- 二:PlayerPrefs 类中的静态方法
- 1:写入数据
- 2:读取数据
- 3:删除数据
- 4:检查数据
- 5:保存数据
- 三:Windows 和 Mac系统 PlayerPrefs 的储存位置
一:什么是 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 值,另一种是因为自己存入了默认值。
3:删除数据
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 文件夹). 。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语
技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。
最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
【Unity3D 教程系列第 15 篇】本地数据持久化之 Playerprefs 类相关推荐
- 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图
这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...
- 【Mac 教程系列第 15 篇】如何查看 Mac 产品的序列号
这是[Mac 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 点击左上角的 logo 标志,选择关于本机,然后会弹出如下界面 你的问题得到解决了吗?欢迎在评论区留言. 赠人玫瑰,手有余香,如 ...
- 【C# 教程系列第 15 篇】抽象类与接口的区别
这是[C# 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 前面几篇博客介绍了抽象类与接口,提到其中一个,很容易想到另外一个,包括搜索时自动联想的内容也是两者的区别,因为抽象类和接口在使用方 ...
- 【Unity3D 教程系列第 12 篇】如何用Unity写一个简易的计时器工具?
这是[Unity3D 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 平常关于延时的处理很多人都喜欢用携程去处理,但是在 Unity 里,并不建议大家用过多的携程,因为会出现一些莫名其妙的 ...
- 【Unity3D 教程系列第 16 篇】Scene视图很清楚,但是Game视图却很模糊的解决方案
这是[Unity3D 教程系列第 16 篇],如果觉得有用的话,欢迎关注专栏. 如果你用 Unity 时,Scene 视图上很清楚,但是 Game 视图却很模糊,恭喜你,你的问题即将被解决了,继续看- ...
- 【Unity3D 教程系列第 19 篇】Unity 中根据长方体模型的尺寸添加碰撞盒 BoxCollider
这是[Unity3D 教程系列第 19 篇],如果觉得有用的话,欢迎关注专栏. 前言: 给一个长方体模型添加碰撞盒 BoxCollider,即使手动拖拽也费不了多长时间,但手动拖动不仅显得 Low , ...
- 【IDEA 教程系列第 15 篇】idea 上下左右移动光标的快捷键
这是[IDEA 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 快捷键如下表格 功能 Windows Mac 光标上移 ↑ ↑ 或 Ctrl + P 光标下移 ↓ ↓ 或 Ctrl + N ...
- 【Unity3D 教程系列第 3 篇】摄像机抖动现象和解决方案
这是[Unity3D 教程系列第 3 篇],如果觉得有用的话,欢迎关注专栏. 新手在开发过程中,很容易犯,也很常见的一个错误就是项目在运行过程中出现屏幕抖动的现象,这是什么原因呢? 原因分析 其中一个 ...
- 【Unity3D 教程系列第 1 篇】Unity如何去掉自带动画?
这是[Unity3D 教程系列第 1 篇],如果觉得有用的话,欢迎关注专栏. 打开Unity,在左上角点击 File 选项后,执行如下操作 文解步骤:File → BuildSetting → Pla ...
最新文章
- DLL返回自定义结构的数组
- Hadoop2常用Shell命令
- 【模块】ESP32CAM arduino程序下载方法及注意事项避坑笔记
- 利用Python编辑一个发送邮件的脚本
- java 发展方向_Java程序员的发展方向有哪些
- HDU1572 下沙小面的(2)【全排列】
- Logisim-Gates library
- Android Srt和Ass字幕解析器
- 学习python的感受
- 恶意注册商标的情形有哪些?恶意抢注商标的认定标准是什么?
- win10彻底关闭更新
- 自己的家用电脑怎么架设传奇私服??
- 出现ConnectionError: Error 10061 connecting to 127.0.0.1:6379. 由于目标计算机积极拒绝,无法连接的解决方法
- createCriteria的用法
- Variational graph auto-encoders (VGAE)
- int是逻辑炸弹吗?
- Android 四大组件之广播(Broadcast)
- 成都旅游住宿购物交通攻略617
- 「 LaTex 」写论文,插入序号(分论点)方法
- 基于Qt的二维码生成器