1.PlayerPrefs是什么?

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

PlayerPrefs的数据存储 类似于键值对存储,一个键对应一个值
提供了三种可存储类型:int、float、string
键:string类型
值:int float string 对应三种API

PlayerPrefs的局限性是 它只能存储3种数据类型
如果想要存储别的数据类型,只能降低精度,或者提高精度来进行存储

优点:
简单、快捷、易懂

缺点:
1.重复工作量繁多,自定义数据类都需要自己去实现存储读取的功能,而且代码的相似度极高
2.数据容易被修改,只要找到文件位置,就可以轻易地进行修改

主要用处:
单独使用它的原生功能 非常适合存储一些对安全性要求不高的简单数据
但是也不能小看它,对它进行简单的封装,也可以让它变得方便又安全

2.存储相关

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson1_PlayerPrefs : MonoBehaviour
{
    private void OnGUI()
    {
        //1.存int型
        PlayerPrefs.SetInt("myAge", 18);
        //2.存float型
        PlayerPrefs.SetFloat("myHeight", 181.5f);
        //3.存string型
        PlayerPrefs.SetString("myName", "假面骑士");

        //注意:直接调用Set方法,只是把数据存到了内存中
        //      当游戏结束时,Unity会自动把数据存到硬盘中
        //      如果游戏没有正常结束(报错或崩溃),那么数据将会丢失
        //解决这一问题的办法,调用.Save()方法,只要一调用,就会马上把数据存到硬盘中
        PlayerPrefs.Save();

        //补充:如果不同类型用同一个键进行存储,会把上一个数据覆盖掉
        PlayerPrefs.SetInt("myHeight", 181);
    }
}

3.读取相关

注意:游戏运行时,只要Set了对应键值对,就算没有马上.Save到硬盘,也能读取出信息

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson1_PlayerPrefs : MonoBehaviour
{
    private void OnGUI()
    {
        PlayerPrefs.SetInt("myAge", 18);
        PlayerPrefs.SetFloat("myHeight", 181.5f);
        PlayerPrefs.SetString("myName", "假面骑士");
        PlayerPrefs.Save();

        //1.读int型
        int age = PlayerPrefs.GetInt("myAge");
        //还有个重载
        //参数2 如果找不到键为myAge的值,就返回默认值100
        //参数2的作用:在得到不存在的数据时,就可以利用参数2来进行基础数据的初始化
        age = PlayerPrefs.GetInt("myAge", 23);

        //2.读float型
        float height = PlayerPrefs.GetFloat("myHeight");

        //3.读string型
        string name = PlayerPrefs.GetString("myName");

        //补充:判断数据是否存在
        if (PlayerPrefs.HasKey("myName"))
        {
            print("存在键为myName的数据");
        }
    }
}

4.删除数据

//删除指定键值对
PlayerPrefs.DeleteKey("myName");
//删除所有数据
PlayerPrefs.DeleteAll();