数据持久化PlayerPrefs

数据持久化

数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称

PlayerPrefs的基本方法

PlayerPrefs是什么

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

存储相关

PlayerPrefs的数据存储 类似于键值对存储 一个键对应一个值

提供了存储3种数据的方法 int float string

键:string类型
值:int float string 对应3种API

//调用Set相关方法 只会存到内存中
PlayerPrefs.SetInt("myAge",18);
PlayerPrefs.SetFloat("myHeight",177.5f);
PlayerPrefs.SetString("myName","阿喆不想学习");
//当游戏结束时 Unity会自动把数据存到硬盘中
//如果游戏不正常结束 数据不会存到硬盘中

//调用该方法 立刻存储到硬盘中
PlayerPrefs.Save();

//PlayerPrefs有局限性 只能存3种类型的数据
//如果想存储其他类型数据 只能降低精度 或上升精度来进行存储

//如果不同类型用同一键名进行存储 会进行覆盖
PlayerPrefs.SetFloat("myAge",18.2f);

读取相关

//运行时 只要set了对应键值对
//即使没有马上save到本地
//也可以读取

//int
int age = PlayerPrefs.GetInt("myAge");
//若找不到myAge,则会返回默认值100
age = PlayerPrefs.GetInt("myAge",100);

//float
float height = PlayerPrefs.GetFloat("myHeight",1000f);

//String
string height = PlayerPrefs.GetString("myName");

判断数据是否存在

if(PlayerPrefs.HasKey("myName"))
{
    print("存在myName的对应数据");
}

删除数据

//删除指定键值对
PlayerPrefs.DeleteKey("myAge");
//删除所有存储的信息
PlayerPrefs.DeleteAll();

PlayerPrefs不同平台的存储位置

PlayerPrefs存储的数据存在哪里

不同平台的存储位置不同

Windows

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

其中公司和产品名称实在 “Project Setting->Player Settings” 中设置的名称

查看

运行 regedit

HKEY_CURRENT_USER

SOFTWARE

Unity

UnityEditor

公司名称

产品名称

Android

/data/data/包名/shared_prefs/pkg-name.xml

IOS

/Library/Preferences/[应用ID].plist

PlayerPrefs数据唯一性

PlayerPrefs中不同数据的唯一性有Key决定,不同key决定不同的数据

同一项目中 如果不同数据key相同 会造成数据丢失

要保证数据不丢失就要建立一个保证key唯一的规则

总结

PlayerPrefs缺点

重复工作量繁多

自定义数据类,都需要自己去实现存储读取的功能

而且代码相似度极高

数据容易被修改

只要找到文件位置,就可以轻易的进行数据修改

主要用处

单独使用他的原生功能

非常适合存储一些对安全性要求不高的简单数据

但对它进行简单的封装也可以让它变得方便又安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值