UD1L1-PlayerPrefs的基本方法

PlayerPrefs

是Unity提供的可以用于存储读取玩家数据的公共类

本章代码关键字

1
2
3
4
5
6
7
8
9
10
PlayerPrefs.SetInt();        //键值对存储int类型数据到内存
PlayerPrefs.SetFloat(); //键值对存储float类型数据到内存
PlayerPrefs.SetString(); //键值对存储string类型数据到内存
PlayerPrefs.Save(); //立刻让内存内的数据存储到硬盘中
PlayerPrefs.GetInt(,) //根据键获取int类型数据
PlayerPrefs.GetFloat(,) //根据键获取float类型数据
PlayerPrefs.GetString(,) //根据键获取string类型数据
PlayerPrefs.HasKey() //判断数据是否存在
DeleteKey() //删除指定键值对
Deletaall() //删除所有存储的信息

存储相关

PlayerPrefs​的数据存储 是类似与键值对存储 一个键对应一个值
提供了存储3种数据的方法 intfloatstring

  • 键:string​类型
  • 值:intfloatstring​ 对应三种API
1
2
3
PlayerPrefs.SetInt("myAge", 18);
PlayerPrefs.SetFloat("myHeight", 177.5f);
PlayerPrefs.SetString("myName", "SevenL");

直接调用Set相关方法 只会把数据存到内存里
当游戏结束是 Unity会自动把数据存到硬盘中
如果游戏没有正常结束 而是崩溃 数据是不会存到硬盘里的!

立刻存储

调用下列方法可以立刻让数据存储到硬盘中

1
PlayerPrefs.Save();

PlayerPrefs是有局限性的 它只能存储3种类型的数据
如果你想要存储别的类型的数据 只能降低精度 或者上升精度来存储

1
2
bool sex = true;
PlayerPrefs.SetInt("sex", sex ? 1 : 0);

如果不同类型用同一键名进行存储 会进行覆盖

1
PlayerPrefs.SetFloat("myAge", 20.2f);    //原来的数据18会被覆盖

读取相关

注意 运行时 只要Set​了对应键值对,即使没有马上存储save​在本地,也能够读取出信息

1
2
3
4
5
6
7
8
9
10
11
12
13
//int
int age = PlayerPrefs.GetInt("myAge"); //注意 这里的键myAge对应的数据是float类型,也就是说int数据里没有这个键,因此这句会返回空也就是0
print(age);
age = PlayerPrefs.GetInt("myAge", 25); //在找不到myAge对应的int数据时,可以填入将默认值填入第二个参数,当找不到数据就会返回默认值
print(age);

//float
float heihgt = PlayerPrefs.GetFloat("myHeight", 175.5f);
print(heihgt);

//string
string name = PlayerPrefs.GetString("myName");
print(name);

第二个参数 默认值 对于我们的作用
就是 在得到没有的数据的时候 就可以用它来进行基础数据的初始化

判断数据是否存在

1
2
3
4
if (PlayerPrefs.HasKey("myName"))
{
print("存在myName对应的键值对数据");
}

删除数据

1
2
3
4
//删除指定键值对
PlayerPrefs.DeleteKey("myAge");
//删除所有存储的信息
PlayerPrefs.DeleteAll();

PlayerPrefs数据唯一性

PlayerPrefs​中不同数据的唯一性是由key决定的,不同的key决定了不同的数据
同一项目中 如果不同数据key相同 会造成数据丢失,要保证数据不丢失就要建立一个保证Key唯一的规则