这是【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 类相关推荐

  1. 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图

    这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...

  2. 【Mac 教程系列第 15 篇】如何查看 Mac 产品的序列号

    这是[Mac 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 点击左上角的 logo 标志,选择关于本机,然后会弹出如下界面 你的问题得到解决了吗?欢迎在评论区留言. 赠人玫瑰,手有余香,如 ...

  3. 【C# 教程系列第 15 篇】抽象类与接口的区别

    这是[C# 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 前面几篇博客介绍了抽象类与接口,提到其中一个,很容易想到另外一个,包括搜索时自动联想的内容也是两者的区别,因为抽象类和接口在使用方 ...

  4. 【Unity3D 教程系列第 12 篇】如何用Unity写一个简易的计时器工具?

    这是[Unity3D 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. 平常关于延时的处理很多人都喜欢用携程去处理,但是在 Unity 里,并不建议大家用过多的携程,因为会出现一些莫名其妙的 ...

  5. 【Unity3D 教程系列第 16 篇】Scene视图很清楚,但是Game视图却很模糊的解决方案

    这是[Unity3D 教程系列第 16 篇],如果觉得有用的话,欢迎关注专栏. 如果你用 Unity 时,Scene 视图上很清楚,但是 Game 视图却很模糊,恭喜你,你的问题即将被解决了,继续看- ...

  6. 【Unity3D 教程系列第 19 篇】Unity 中根据长方体模型的尺寸添加碰撞盒 BoxCollider

    这是[Unity3D 教程系列第 19 篇],如果觉得有用的话,欢迎关注专栏. 前言: 给一个长方体模型添加碰撞盒 BoxCollider,即使手动拖拽也费不了多长时间,但手动拖动不仅显得 Low , ...

  7. 【IDEA 教程系列第 15 篇】idea 上下左右移动光标的快捷键

    这是[IDEA 教程系列第 15 篇],如果觉得有用的话,欢迎关注专栏. 快捷键如下表格 功能 Windows Mac 光标上移 ↑ ↑ 或 Ctrl + P 光标下移 ↓ ↓ 或 Ctrl + N ...

  8. 【Unity3D 教程系列第 3 篇】摄像机抖动现象和解决方案

    这是[Unity3D 教程系列第 3 篇],如果觉得有用的话,欢迎关注专栏. 新手在开发过程中,很容易犯,也很常见的一个错误就是项目在运行过程中出现屏幕抖动的现象,这是什么原因呢? 原因分析 其中一个 ...

  9. 【Unity3D 教程系列第 1 篇】Unity如何去掉自带动画?

    这是[Unity3D 教程系列第 1 篇],如果觉得有用的话,欢迎关注专栏. 打开Unity,在左上角点击 File 选项后,执行如下操作 文解步骤:File → BuildSetting → Pla ...

最新文章

  1. DLL返回自定义结构的数组
  2. Hadoop2常用Shell命令
  3. 【模块】ESP32CAM arduino程序下载方法及注意事项避坑笔记
  4. 利用Python编辑一个发送邮件的脚本
  5. java 发展方向_Java程序员的发展方向有哪些
  6. HDU1572 下沙小面的(2)【全排列】
  7. Logisim-Gates library
  8. Android Srt和Ass字幕解析器
  9. 学习python的感受
  10. 恶意注册商标的情形有哪些?恶意抢注商标的认定标准是什么?
  11. win10彻底关闭更新
  12. 自己的家用电脑怎么架设传奇私服??
  13. 出现ConnectionError: Error 10061 connecting to 127.0.0.1:6379. 由于目标计算机积极拒绝,无法连接的解决方法
  14. createCriteria的用法
  15. Variational graph auto-encoders (VGAE)
  16. int是逻辑炸弹吗?
  17. Android 四大组件之广播(Broadcast)
  18. 成都旅游住宿购物交通攻略617
  19. 「 LaTex 」写论文,插入序号(分论点)方法
  20. 基于Qt的二维码生成器

热门文章

  1. 沪深交易所网上、网下发行对比
  2. Mybatis新增数据,存在就更新,不存在就添加
  3. 基于OpenCV的鱼眼相机畸变矫正(含代码)
  4. 汇编语言程序教程:从入门到精通!
  5. STM32平衡小车 TB6612电机驱动学习
  6. 机器学习之K近邻(KNN)模型
  7. DateEdit和TimeEdit
  8. 福昕阅读器中,如何令两个pdf文件分别在两个不同的窗口显示?
  9. java论坛私信_巡云轻论坛系统 - JAVA轻论坛
  10. 【射频知识】PCB材料/层叠/信号注入设计与传输线实现形式的性能比对