PlayerPrefs数据持久化

本文详细介绍了Unity中的PlayerPrefsAPI,包括数据存储、读取机制,不同类型数据的处理,存在性和删除操作,以及不同平台的存储位置。尽管简单易用,但PlayerPrefs对于安全性要求较高的数据存储并不理想。
摘要由CSDN通过智能技术生成

数据持久化:

数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。就是内存与硬盘之间数据相互转换存储。

PlayerPrefs基本方法

什么是PlayerPrefs

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

存储相关

数据存储类似于键值对存储,能够存储三种类型int,float,string

其中键只能是string,值可以是以上三种类型,分别对应三种API

PlayerPrefs.SetInt("MyAge", 1);
PlayerPrefs.SetString("MyName", "111");
PlayerPrefs.SetFloat("myHeight", 1.2f);

Set方法会把数据存储到内存里,游戏结束时Unity会把数据存储到硬盘中,若游戏非正常结束,例如崩溃,则不会存储到硬盘中故需要用到以下函数马上将数据存储到硬盘中。

PlayerPrefs.Save();

不同类型但是使用了同一键名存储则会进行覆盖

读取相关

注意:在运行时只要set对应的键值对,就可以读出信息,不需要存储到本地硬盘。假如get的键没有对应的值会返回该值得默认值int和float都是0,string是空字符串

//int
int age = PlayerPrefs.GetInt("myAge"); 
print(age);
//如果找不到myAge对应的值 就会返回函数的第二个参数
age =PlayerPrefs.GetInt("myAge",100);
print(age);
//float
float height = PlayerPrefs.GetFloat("myHeight", 1000f);
print(height);
//string
string name =PlayerPrefs.GetString("myName");
print(name);

第二个参数的作用:

在得到没有的数据时可以进行基础数据的初始化

判断是否存在该键,防止数据赋值时覆盖

if (PlayerPrefs.HasKey("Myname"))
{
    print("该键已存在");
}

删除相关

删除指定键值对

PlayerPrefs.DeleteKey("MyName");

删除所有数据

PlayerPrefs.DeleteAll();

PlayerPrefs不同平台存储位置

Windows

PlayerPrefs 存储在HKCU\Software\[公司名称]\[产品名称]项下的注册表中

其中公司和产品名称是 在“Project settings”中设置的名称

运行 regedit

HKEY_CURRENT_USER

SOFTWARE

Unity

UnityEditor

公司名称

产品名称

Android

存储在/data/data/包名/shared prefs/pkg-name.xml文件中

IOS

存储在/Library/Preferences/[应用ID].plist文件中

PlayerPrefs数据唯一性

不同数据是由key来唯一确定的,故要保证key的唯一性,否则会发生数据覆盖导致丢失数据

总结

优点:简单,快捷,易懂

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

主要用处:单独使用原生功能,适合存储一些对安全性要求不高的简单的数据。

但是对其进行简单的封装也可以变的简单又安全

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值