数据持久化
:将游戏数据存储到硬盘,硬盘中数据读取到游戏中,也就是传统意义上的存盘 游戏中的变量数据是存储在内存中的,如果游戏结束运行,这些数据就会丢失,数据持久化,就是把游戏运行过程中存在内存中的数据存储在硬盘中,保证不会丢失
PlayerPrefs的基本方法
是unity提供的可以用于存储读取玩家数据的公共类
PlayerPrefs的数据存储,类似于键值对存储 一个键对应一个值 提供了存储3种数据的方法 int float string 键:string类型 值:int float string 对应3种API
PlayerPrefs.SetInt("myAge",18);
PlayerPrefs.SetFloat("myHeight",177.5f);
PlayerPrefs.SetString(“myName”“姜小丫”)
直接调用set方法。只会把数据存到内存里 当游戏结束时,unity会自动把数据存到硬盘中(如果游戏不是正常结束而是崩溃的,数据是不会存到硬盘中的,只要调用该方法,就会马上存储到硬盘中 )PlayerPrefs.Save();
局限性:只能存3种类型的数据,如果要存储别的类型的数据,只能降低或上升精度来进行存储 如果不同类型用同一键名进行存储,会进行覆盖 PlayerPrefs.SetFloat(“myAge”,20.2f);
- 知识点三:读取相关
注意:运行时 只要你Set了对应键值对,即使没有马上存储Save在本地 也能读取出信息
int age =PlayerPrefs.GetInt("myAge");
age =PlayerPrefs.GetInt("myAge",100)
float f=PlayerPrefs.GetFloat("myHeight");
string s=PlayerPrefs.GetString("myName");
判断数据是否存在 主要为了避免相同的key值会覆盖 if (PlayerPrefs.HasKey(“myName”)) { print(“存在”); } **
- 知识点四:删除数据
**
PlayerPrefs.Deletkey("myAge");
PlayerPrefs.DeletAll();
PlayerPrefs在不同平台的存储位置
**
- 知识点一:PlayerPrefs存储的数据存储在哪里
** Windows PlayerPrefs存储在 HKCU\Software[公司名称][产品名称] 项下的注册表中 其中公司名称和产品名称是在 project Setting中设置的名称 查看: //W+R 运行 regedit //KKEY_CURRENT_USER //SPFTWARE //Unity //UnityEditor //公司名称 //产品名称 (可直接修改数据) Android /data/data/包名/shared_prefs/pkg-name.xml
IOS /Library/Preferences/[应用ID].plist **
** PlayerPrefs不同数据的唯一性是由key决定的,不同的key决定了不同的数据 同一项目中,如果不同数据的key相同,就会造成数据丢失 要保证数据不丢失就要建立一个保证key唯一的规则 **
** 缺点; 重复工作量繁多 自定义数据类,都需要自己去实现存储读取的功能 而且代码的相似度极高
数据容易被修改 只要找到文件位置,就可以轻易的进行数据修改
|