数据持久化:将游戏在运行时内存中产生的数据保存到硬盘中。
提供了存储三种数据的方法 int,string,float
键:string类型
值:int float string
局限:只能存取三种类型的数据,想要存储其它类型的数据只能通过降低精度或者上升精度来保存。
存储:
PlayerPrefs.SetInt("year",2021);
PlayerPrefs.SetFloat("Money",233.1f);
PlayerPrefs.SetString("Player","玩家");
//直接调用Set相关方法 只会把数据存到内存里
//当游戏结束时,unity会自动把数据存到硬盘中
//如果游戏在运行过程中崩溃,数据不会存储到硬盘中
PlayerPrefs.Save();//只要调用了该方法,数据就会立即保存。
如果不同类型用同一键名进行存储,会覆盖。之后只能用对应类型的方法进行读取。
PlayerPrefs.SetFloat("year",200.1f);
读取:
int year = PlayerPrefs.GetInt("year");
Debug.Log(year);//仍能打印到控制台,但是打印出来的数字为零,因为数据已经被覆盖,返回了默认值。
year = PlayerPrefs.GetInt("year",12);GetInt()存在重载,当找不到对应值时返回传入的默认值。能找到则返回相应的值。
GetString()
GetFloat()同理
默认参数的作用:
在得到没有的数据时,可用来对数据进行数据初始化。
判断数据是否存在:
if (PlayerPrefs.HasKey("year"))
{
Debug.Log("数据存在");
}
删除指定键值对:
PlayerPrefs.DeleteKey("year");
删除所有存储信息:
PlayerPrefs.DeleteAll();
Windows:可打开注册表(win+R 输入regedit)
进入计算机\HKEY_CURRENT_USER\SOFTWARE\Unity\UnityEditor
Android: ./data/data/包名/shared_prefs/pkg-name.xml
Ios: ./Library/Preferences/[应用ID].plist