Unity学习笔记之——PlayerPrefs

1.定义

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

2.存储方式

PlayerPrefs的数据存储方式类似于键值对存储,利用key---value的方式将数据保存到本地,跟字典类似。

提供了三种可存储类型:int、float、string

键:string类型

值:int float string 对应三种API

优点:

简单、快捷、易懂

缺点:

(1)重复工作量繁多,自定义数据类都需要自己去实现存储读取的功能,而且代码的相似度极高

(2)数据容易被修改,只要找到文件位置,就可以轻易地进行修改

3.数据的存储

cs 复制代码
//1.存int型
PlayerPrefs.SetInt("myAge", 18);
//2.存float型
PlayerPrefs.SetFloat("myHeight", 181.5f);
//3.存string型
PlayerPrefs.SetString("myName", "假面骑士");

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

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

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

4.数据的读取

cs 复制代码
PlayerPrefs.SetInt("myAge", 18);
PlayerPrefs.SetFloat("myHeight", 181.5f);
PlayerPrefs.SetString("myName", "假面骑士");
PlayerPrefs.Save();

//1.读int型
int age = PlayerPrefs.GetInt("myAge");

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

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

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

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

5.数据清除

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

注意:用DeleteKey方法删除某个数据后再用HasKey判断是否存在,会返回false,但是用Get方法去得到一个不存在的值,会返回0。

6.储存其他类型数据的方法

由于PlayerPrefs只能存3种类型的数据,如果你想要存储别的类型的数据,只能降低精度或者上升精度来进行存储

cs 复制代码
    //存储布尔类型
    bool sex = true;
    PlayerPrefs.SetInt("sex", sex ? 1 : 0);


    //存储List,存储时候需要遍历
    PlayerPrefs.SetInt("_ItemNum", itemList.Count);
    for (int i = 0; i < itemList.Count; i++)
    {
        //存储每一个装备的信息
        PlayerPrefs.SetInt("_itemID" + i, itemList[i].id);
        PlayerPrefs.SetInt("_itemNum" + i, itemList[i].num);
    }

7.储存位置

保存在 PlayerPrefs 上的数据存储于设备本地。

1、在Mac OS X上,PlayerPrefs数据存储在~/Library/PlayerPrefs文件夹,名为unity.company name.product name.plist,这里company和product名是在project Setting中设置的。

2、在windows上,PlayerPrefs数据存储在注册的HKCU\Softwarecompany nameproduct name键下,这里company和product名是在project setting中设置的。

3、在Android上,PlayerPrefs数据存储(持久化)在设备上,数据保存在SharedPreferences中。

相关推荐
星恒随风15 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
§ꦿCFོ༉16 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
2603_9696948518 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea19 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
寂寞的船21 小时前
【Unity Bug挑战】第12期 Awaitable 二次 await 死锁之谜 —— 为什么同一个异步操作等两次就卡死?
unity·c#·游戏引擎·bug
Go Work1 天前
两个等值条件摆着,MySQL 偏要全表扫
经验分享·笔记
Oll Correct1 天前
Adobe illustrator 案例十四:花元素标志草图绘制
笔记·ui·adobe·illustrator
北京云帆互联科技1 天前
云帆培训考试系统更新说明:v9.3.0
java·学习
sxlishaobin1 天前
Maven Setting详解
java·学习·maven
每月一号准时摆烂1 天前
服务器运维笔记(一)——使用shell编写实时查看BMC功率的脚本
运维·服务器·笔记