目录
PlayerPrefs是什么
存储原理
读取相关
删除数据
PlayerPrefs数据唯一性
PlayerPrefs是什么
是Unity提供的可以用于存储读取玩家数据的公共类
存储原理
PlayerPrefs的数据存储,类似键值对存储,一个键对应一个值
提供了存储3种数据的方法 ,int float string
键:string
值:int float string 对应三种3API
调用set方法存只是到了内存中
PlayerPrefs.SetInt("myAge",18); PlayerPrefs.SetFloat("myHeight",177.5f); PlayerPrefs.SetString("myName", "shan");当游戏结束时,Unity会自动把数据存到硬盘中
如果游戏不是正常结束的 而是崩溃 数据是不会存到硬盘中的
只要调用该方法 ,就马上会存到硬盘中
PlayerPrefs.Save();PlayerPrefs是有局限性的,它只能存3种类型的数据
如果你想要存储别的类型的数据,只能降低精度或者上升精度来进行存储
bool sex = true; PlayerPrefs.SetInt("sex", sex ? 1 : 0);如果不同的数据类型用同一键名进行存储,就会进行覆盖。
PlayerPrefs.SetFloat("myAge",20.0f);读取相关
注意 运行时,只要你Set了对应键值对
即使你没有马上存储Save在本地
也能够读取出信息
读取了上面float的值,不会报错 但会读取为0 ,因为不存在int类型的(被覆盖了)
int age = PlayerPrefs.GetInt("myAge");如果找不到myAge对应的值,就会返回函数的第二个参数,默认值
age = PlayerPrefs.GetInt("myAge",100);判断数据是否存在
if (PlayerPrefs.HasKey("myName")) { print("存在"); }删除数据
删除指定键值对
PlayerPrefs.DeleteKey("myAge");删除所有存储的信息
PlayerPrefs.DeleteAll();PlayerPrefs存储
PlayerPrefs 存储的数据位置
HKCU\Software\[公司名称]\[产品名称] 项下的注册表中
其中公司和产品名称是 在“Project Settings”中设置的名称。
运行 regedit
HKEY_CURRENT_USER
SOFTWARE6
Unity
UnityEditor
公司名称
产品名称
Android
data/data/包名/shared_prefs/pkg-name.xmlIOS
/Library/Preferences/[应用ID].plistPlayerPrefs数据唯一性
PlayerPrefs中不同数据的唯一性
是由key决定的,不同的key决定了不同的数据
同一项目中 如果不同数据key相同 会造成数据丢失
要保证数据不丢失就要建立一个保证key唯一的规则