对操作步骤状态以及相应信息进行存储与调用(一)--------类似于游戏的存档与读档;

存档

在unity3d里面,存档和读档主要用到PlayerPrefs类。
PlayerPrefs是unity提供的一个用于数据本地持久化保存和读取的类。
链接: Unity官方关于PlayerPrefs的API文档.

PlayerPrefs的工作原理

以kety-value的形式将数据保存到本地,然后在代码中可以写入、读取、更新数据。
官方文档:采用键值对的方式对数据进行存储—保存在本地文件(不同操作系统存储路径不同)中,然后程序可以根据这个名称取出上次保存的数值)

PlayerPrefs的作用

存储一些非关键性的数据,对于没有服务器的单机游戏,游戏存档和分数排名等都需要用到数据存储,可以用PlayerPreds轻松实现

存储类型

可以存储int,float,string类型的数据

Static Methods-
SetIntSets the value of the preference identified by key.
SetFloatSets the value of the preference identified by key.
SetStringSets the value of the preference identified by key.
SaveWrites all modified preferences to disk.
HasKeyReturns true if key exists in the preferences.
GetStringReturns the value corresponding to key in the preference file if it exists.
GetIntReturns the value corresponding to key in the preference file if it exists.
GetFloatReturns the value corresponding to key in the preference file if it exists.
DeleteKeyRemoves key and its corresponding value from the preferences.
DeleteAllRemoves all keys and values from the preferences. Use with caution.

例子:

//存储数据
PlayerPrefs.SetInt("Index",1);
PlayerPrefs.SetFloat("Height",183.5f); 
PlayerPrefs.SetString("Name","Tom");
//获取数据
PlayerPrefs.GetInt("Index");
PlayerPrefs.GetFloat("float");
PlayerPrefs.GetString("string");
//删除与查找数据
PlayerPrefs.DeleteAll();
PlayerPrefs.DeleteKey("name");
bool exist = PlayerPrefs.HasKey("name");

数据是以键值对的形式存储的,可以看作是一个字典;数据读取时通过键名来读取,如果值不存在则返回默认值。

存储数据序列化

Serialization(序列化):可以用来将对象转化为字节流。
Deserialization(反序列化):可以用来将字节流转换为对象。
常见的数据序列化方法:二进制方法,XML方法,JSON方法
存储位置:内存、文件、数据库–可存于本地或云
windows下PlayerPrefs存档主要存储在注册表里面,
路径:HKCU\Software\AppDataLow\Software\CompanyName\ProductName

三种序列化方法:二进制方法,XML方法,方法

二进制方法

序列化:新建/打开一个二进制文件,通过二进制格式器将对象写入。
反序列化:打开二进制文件,再通过二进制格式器解析成对象。

XML方法

XML:扩展标记语言,用于标记电子文件,使其具有结构性。
序列化与反序列化与二进制方法相似
优点:1. 文件可读性强 2. 升级版本后,如果增加了字段,则自动采用类中赋给该变量的值 3. 升级版本后,如果删除了字段,则自动忽略之前的字段,不会出现报错
缺点:1. 冗余信息多 2. 不可以序列化字典,二维数组以上的数据

Json方法

Json:跨平台数据传输
序列化:

graph LR
对象-->JSON

反序列化:

graph LR
JSON-->对象

优点:1. 使用简单 2. 可以满足几乎所有的数据类型(除了float需要用double来储存) 3. 如果更新版本,新增删除字段,跟XML处理结果一样。
缺点:1. 数据格式不直观,可读性比XML差 2. 不能序列化 float 类型 3. 不支持更改字段名,如果更改,则会删除之前的并新增一个新的。

三种存储方式比较

二进制:简单,可读性差;
XML:可读性强,但文件大,冗余信息多;
JSON:数据格式比较简单,易于读写,但是不直观,可读性比XML差。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值