来源:https://www.bilibili.com/video/BV1nQ4y1z7pZ?spm_id_from=333.337.search-card.all.click

PlayerPrefs

官方手册: https://docs.unity3d.com/ScriptReference/PlayerPrefs.html

  • 数据存储函数

public static void SetString(string key, string value);
public static void SetInt(string key, int value);
public static void SetFloat(string key, float value);

  • 数据读取函数

public static string GetString(string key);
public static int GetInt(string key);
public static float GetFloat(string key);
可以加第二个参数,string defaultValue,load一个默认值

  • 函数说明:

    • key:键
    • value:值
    • 一个键对应一个值,读取数据时只要获取键就可以

    键只有string类型,存储的数据类型有string、int和float型

  • 缺点:存储复杂数据比较困难

  • 优点:但是unity 内建的api,直接调用即可

  • 补充资料:

    • 序列化:将数据变为实体,可以在面板中被调整

截屏2022-04-05 下午3.58.29.png

  • 示例:自定义类的序列化

截屏2022-04-05 下午4.03.40.png

  • 存储位置:

详见官方手册说法。
根据官网手册在Macos上找这个文件发现并不能找到,但是load数据是可以load出来的,不清楚这个数据具体存在什么地方,暂时没查到

  • PlayerPrefs的拓展

    • PlayerPrefs只支持 string/int/float三种数据类型的存取
    • 如何存储其他类型的数据以及更复杂的数据呢?
      • JsonUtility:可以将任何Unity序列化程序支持的类->JasonUtility.ToJson()->转化成Json对象(Json就是按一定格式书写的string,这样就可以用PlayerPrefs.SetString()来存储json字符串)
  • PlayerPrefs的适用范围

    • 适合用来存储暂时性的数据
      • 玩家设定偏好
      • 简单的数据
      • 游戏原型制作时暂时的存储方案