数据持久化—PlayerPrefs

数据持久化

:将游戏数据存储到硬盘,硬盘中数据读取到游戏中,也就是传统意义上的存盘
游戏中的变量数据是存储在内存中的,如果游戏结束运行,这些数据就会丢失,数据持久化,就是把游戏运行过程中存在内存中的数据存储在硬盘中,保证不会丢失
在这里插入图片描述

PlayerPrefs的基本方法

  • 知识点一:PlayerPrefs是什么?

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

  • 知识点二:存储相关

PlayerPrefs的数据存储,类似于键值对存储 一个键对应一个值
提供了存储3种数据的方法 int float string
键:string类型
值:int float string 对应3种API

PlayerPrefs.SetInt("myAge",18);
PlayerPrefs.SetFloat("myHeight",177.5f);
PlayerPrefs.SetString(“myName”“姜小丫”)

直接调用set方法。只会把数据存到内存里
当游戏结束时,unity会自动把数据存到硬盘中(如果游戏不是正常结束而是崩溃的,数据是不会存到硬盘中的,只要调用该方法,就会马上存储到硬盘中 )PlayerPrefs.Save();

局限性:只能存3种类型的数据,如果要存储别的类型的数据,只能降低或上升精度来进行存储
如果不同类型用同一键名进行存储,会进行覆盖
PlayerPrefs.SetFloat(“myAge”,20.2f);

  • 知识点三:读取相关
    注意:运行时 只要你Set了对应键值对,即使没有马上存储Save在本地 也能读取出信息
//int 
int age =PlayerPrefs.GetInt("myAge");//如果获取的值没有,则返回默认值0
age =PlayerPrefs.GetInt("myAge"100)//如果获取的值没有myAge,则返回设定的默认值100
//float
float f=PlayerPrefs.GetFloat("myHeight");
//string
string s=PlayerPrefs.GetString("myName");

判断数据是否存在 主要为了避免相同的key值会覆盖
if (PlayerPrefs.HasKey(“myName”))
{
print(“存在”);
}
**

- 知识点四:删除数据

**

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

PlayerPrefs在不同平台的存储位置

**

  • 知识点一:PlayerPrefs存储的数据存储在哪里

**
Windows
PlayerPrefs存储在 HKCU\Software[公司名称][产品名称] 项下的注册表中
其中公司名称和产品名称是在 project Setting中设置的名称
查看:
//W+R 运行 regedit
//KKEY_CURRENT_USER
//SPFTWARE
//Unity
//UnityEditor
//公司名称
//产品名称
(可直接修改数据)
Android
/data/data/包名/shared_prefs/pkg-name.xml

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

  • 知识点二:PlayerPrefs数据唯一性

**
PlayerPrefs不同数据的唯一性是由key决定的,不同的key决定了不同的数据
同一项目中,如果不同数据的key相同,就会造成数据丢失
要保证数据不丢失就要建立一个保证key唯一的规则
**

  • 总结

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值