4 数据持久化
约 507 字大约 2 分钟
2025-05-31
类似于键值对存储
函数 | 作用 |
---|---|
SetInt/String/Float | 把对应类型的数据存储在内存中,等游戏结束时unity会自动把数据存储到硬盘中,需要给出key值。只能存储这三个类型的数据,如果key相同会覆盖 |
Save | 立刻把PlayerPrefs中的数据存储到硬盘 |
GetInt/String/Float | 获取对应类型的值,如果没有则返回默认值,也可以手动设置默认值 |
HasKey | 判断是否存在此key名的数据 |
DeletaKey | 删除指定的key |
DeleteAll | 删除所有数据 |
存储位置
Windows /HKcu\Software[公司名称][产品名称] 项下的注册表中 其中公司和产品名称是在"ProjectSettings”中设置的名称。
Android /data/data/包名/shared_prefs/pkg-name.xml
IOS /Library/Preferences/[应用ID].plist
JSON
在unity中序列化和反序列化使用的类是JsonUtility
将对象转化为json
ToJson
- 在转化时浮点数会有精度误差
- 如果类中有自定义的类型那么该自定义类型的声明上面要加上
[Serializable]
特性 - 私有成员无法被序列化,要想序列化私有成员需要加上
[SerializeField]
特性 - JsonUtility无法序列化字典
- 存储的null对象不会是null而是默认的数据
将json字符串反序列化
FromJson
读取时无法之间反序列化数组类型,只能使用一个对象包裹这个数组
- Jsonutlity是unity自带,LitJson是第三方需要引l用命名空间
- Jsonutlity使用时自定义类需要加特性,LitJson不需要
- Jsonutlity支持私有变量(加特性),LitJson不支持
- Jsonutlity不支持字典,LitJson支持(但是键只能是字符串
- Jsonutlity不能直接将数据反序列化为数据集合(数组字典)),itJson可以
- Jsonutlity对自定义类不要求有无参构造,LitJson需要
- Jsonutlity存储空对象时会存储默认值而不是null,LitJson会存nul1
贡献者
版权所有
版权归属:PinkDopeyBug