1.基本方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class lesson1 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
#region PlayerPrefs是什么
//是Unity提供的可以用于存储读取玩家数据的公共类
#endregion
#region 存储相关
//PlayerPrefs的数据存储 类似于键值对存储 一个键对应一个值
//提供了存储3种数据的方法 int float string
//键:string类型
//值:int float string 对应3种API
PlayerPrefs.SetInt("myAge", 18);
PlayerPrefs.SetFloat("myHeight", 170.5f);
PlayerPrefs.SetString("myName", "于双");
//直接调用Set相关方法 只会把数据存到内存里
//当游戏结束时 Unity会自动把数据存到硬盘里
//如果游戏不是正常结束的 而是崩溃 数据是不会存到硬盘中的
PlayerPrefs.Save();
//只要调用该方法 就会马上存储到硬盘中
//PlayerPrefs是有局限性的 它只能存三种类型的数据
//如果你想要存储别的类型的数据 只能降低精度 或者上升精度来进行存储
bool sex = true;
PlayerPrefs.SetInt("sex", sex ? 1 : 0);
//如果不同类型用同一键名进行存储 会进行覆盖
//PlayerPrefs.SetFloat("myAge", 20.2f);
#endregion
#region 读取相关
//注意:运行时 只要你Set了对应键值对
//即使你没有马上存储Save在本地
//也能够读取出信息
//int
int age = PlayerPrefs.GetInt("myAge");
print(age);
//如果找不到myAge对应的值 就会返回函数的第二个参数 默认值
age = PlayerPrefs.GetInt("myAge", 100);
print(age);
//float
float height = PlayerPrefs.GetFloat("myHeight");
print(height);
//string
string name = PlayerPrefs.GetString("myName");
//第二个参数 默认值 对于我们的作用
//就是 在得到没有的数据的时候 就可以用它来进行基础数据的初始化
//判断数据是否存在
if (PlayerPrefs.HasKey("myName"))
{
print("存在myName对应的键值对数据");
}
#endregion
#region 删除数据
//删除指定键值对
PlayerPrefs.DeleteKey("myAge");
//删除所有存储的信息
PlayerPrefs.DeleteAll();
#endregion
}
}
2.不同平台的存储位置
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class lesson2 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
#region PlayerPrefs存储的数据存在哪里?
//不同平台存储位置不一样
#region Windows
//PlayerPrefs 存储在
//HKCU\Software\[公司名称]\[产品名称] 项下的注册表中
//其中公司和产品名称是 在“Project Settings”中设置的名称
//运行 regedit
//HKEY_CURRENT_USER
//SOFTWARE
//Unity
//UnityEditor
//公司名称
//产品名称
#endregion
#region Android
// /data/data/包名/shared_prefs/pkg-name.xml
#endregion
#region IOS
// /Library/Preferences/[应用ID].plist
#endregion
#endregion
#region PlayerPrefs数据唯一性
//PlayerPrefs中不同数据的唯一性
//是由key决定的,不同的key决定了不同的数据
//同一项目中 如果不同数据key相同 会造成数据丢失
//要保证数据不丢失就要建立一个保证key唯一的规则
#endregion
}
// Update is called once per frame
void Update()
{
}
}