1、PlayerPrefs是什么?
PlayerPrefs是Unity内置的一个用于数据本地持久化保存与读取的类,可以用于存储一些简单的数据类型:int ,string ,float。工作原理十分简单,就是以key-value的形式将数据保存在本地,然后在代码中可以写入、读取、更新数据。
PlayerPrefs的局限性:它只能存储3种数据类型,如果想要存储别的数据类型,只能降低精度,或者提高精度来进行存储。
2、存储相关
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson1_PlayerPrefs : MonoBehaviour
{
private void OnGUI()
{
//1.存int型
PlayerPrefs.SetInt("intKey", 18);
//2.存float型
PlayerPrefs.SetFloat("floatKey", 1.5f);
//3.存string型
PlayerPrefs.SetString("strKey", "PlayerPrefs");
//注意:直接调用Set方法,只是把数据存到了内存中
// 当游戏结束时,Unity会自动把数据存到硬盘中
// 如果游戏没有正常结束(报错或崩溃),那么数据将会丢失
//解决这一问题的办法,调用.Save()方法,只要一调用,就会马上把数据存到硬盘中
PlayerPrefs.Save();
//补充:如果不同类型用同一个键进行存储,会把上一个数据覆盖掉
PlayerPrefs.SetInt("floatKey", 1);
}
}
3、读取相关
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson1_PlayerPrefs : MonoBehaviour
{
private void OnGUI()
{
PlayerPrefs.SetInt("intKey", 18);
PlayerPrefs.SetFloat("floatKey", 1.5f);
PlayerPrefs.SetString("strKey", "PlayerPrefs");
PlayerPrefs.Save();
//1.读int型
int age = PlayerPrefs.GetInt("intKey");
//还有个重载
//参数2 如果找不到键为myAge的值,就返回默认值100
//参数2的作用:在得到不存在的数据时,就可以利用参数2来进行基础数据的初始化
age = PlayerPrefs.GetInt("intKey", 23);
//2.读float型
float height = PlayerPrefs.GetFloat("floatKey");
//3.读string型
string name = PlayerPrefs.GetString("strKey");
//补充:判断数据是否存在
if (PlayerPrefs.HasKey("strKey"))
{
print("存在键为strKey的数据");
}
}
}
4、删除数据
//删除指定键值对
PlayerPrefs.DeleteKey("strKey");
//删除所有数据
PlayerPrefs.DeleteAll();