Chinar blog :www.chinar.xin
Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 |
助力快速熟悉 Unity EasySave 插件的使用,使你的储存更加方便! 为初学者节省宝贵的时间,避免采坑! |
EasySave —— 一款方便且强大的数据存储插件,我们可以用来存储多种类型的数据
1. 比 PlayerPrefs 更快
2. 它几乎可以保存任意类型,无需你去为序列化而烦恼
3. 关于跨平台性,亦是十分强大,只需一个插件,无需为更换平台而担心造成多余的开发,兼容问题
支持的平台有 | 类型 |
---|---|
PC / Mac / Linux |
iOS版 |
Android的 |
iOS版 |
Windows Phone 8 |
WebGL的 |
Windows Universal Apps |
Windows应用商店 |
黑莓10 |
持续开发中… |
神级英语学者,请直接看官网 —— EasySave官方网站
请支持正版购买和下载
下载导入 Unity 过程就不说了,导入成功后如下图所示:Window 中会出现相应插件
(由于 Chinar 买的是正版,所以插件直接包含了
Easy Save2
和Easy Save3
)
点击 EasySave3 后会弹出插件编辑窗口,首先来了解 Home 页面
接着来看 Settings 页面:
为开发者提供可视化操作的配置途径,用来选择数据储存的方式、加密、默认保存路径等等…
接着我们来仔细了解下 Location 选项中的4个选项
类型 | 说明 |
---|---|
File类型 |
以文件的形式储存到本地 |
PlayerPrefs |
以数据持久化形式储存到本地缓存 |
Memory |
加载到内存中 |
Resources |
储存到 Resources 文件夹中 |
数据保存地址
Chinar 建议使用 PersistentDataPath ,它在各个平台中都可以正常储存。
Unity 数据路径相关博文( Chinar Blog )
接着看一下 Encryption Type –加密类型选项:
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法
是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS
PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
工具页面提供了几个按钮,便于我们开发使用。
1.打开 持久化数据目录
2.清除该路径下的数据文件
3.清空应用缓存
我们可以在什么时候保存或加载呢?
我们可以在任何可以运行代码的地方保存和加载
但通常在游戏开始时Start
初始化中加载数据,并在程序退出时 UnityOnApplicationQuit
保存数据
除此之外,日常开发中也常用 OnApplicationPause
,在程序暂停时进行保存数据
话不多说,首先来看一下最常用的几个方法:
方法名 | 作用 |
---|---|
ES3.Save |
保存数据 |
ES3.Load |
加载数据 |
ES3.LoadInto |
把数据,直接赋值给指定对象 |
ES3.KeyExists() |
判断该数据中,键是否存在 |
保存与加载
void Start()
{
ES3.Save<int>("ChinarInt", 123); //将整数 123 保存到名为 ChinarInt 的键中
int chinarInt = ES3.Load<int>("ChinarInt"); //获取数据中 (键:ChinarInt) 对应的值
print(chinarInt); //打印输出
}
接下来,我们来探究一下默认情况下,数据保存到哪里了
点击 Window
--> EasySave3
--> Tools
打开ES3编辑器面板
用
记事本
打开,我们会看到数据的存储格式为JSON
格式
如果工程所需保存的数据,种类繁多,或是数据量庞大,所有数据都保存在这一个默认文件中
势必会造成数据管理上的不便,那么我们应该怎么办?
我们可以将数据进行分类管理
,并且分别保存
到我们指定的路径下的文件当中
EasySave
函数有多个重载()
void Start()
{
// 将 数据 保存到 默认路径下的默认文件当中
ES3.Save<int>("ChinarInt", 666);
// 将 数据 保存到 默认路径下的 ChinarFile.es3 文件当中
ES3.Save<int>("ChinarInt", 777, "ChinarFile.es3");
// 将 数据 保存到 默认路径下的 ChinarFolder文件夹下的 ChinarFile.es3 文件当中
ES3.Save<int>("ChinarInt", 888, "ChinarFolder/ChinarFile.es3");
// 将 数据 保存到 默认路径下的 ChinarFolder文件夹下的 ChinarFile.es3 文件当中
ES3.Save<int>("ChinarInt", 999, "C:/Users/Administrator/Desktop/ChinarFile.es3");
}
如此一来,我们就解决了一个文件中数据保存量过大的问题
ES3.LoadInto
—— 把数据,直接赋值给指定对象()
打开Unity,在场景中创建两个 Cube ,Cube1
和Cube2
设置 Cube1
的世界坐标为(5,5,5)
设置 Cube2
的世界坐标为(0,0,0)
1. 首先保存 Cube1 的 Transform 组件信息,到默认数据文件当中
2. 从默认数据文件当中读取"Chinar_Cube1"键所对应的的值,(Cube1 的 Transform
组件信息),直接赋值给指定对象 Cube2
public class ChinarEs3 : MonoBehaviour
{
public GameObject Cube1;
public GameObject Cube2;
void Start()
{
//首先保存 Cube1 的 Transform 组件信息,到默认数据文件当中
ES3.Save<Transform>("Chinar_Cube1", Cube1.transform);
//从默认数据文件当中读取"Chinar_Cube1"键所对应的的值,(Cube1 的 Transform 组件信息),直接赋值给指定对象 Cube2
ES3.LoadInto("Chinar_Cube1", Cube2.transform);
}
}
运行后,可以看到Cube2
的位置信息和Cube1
的位置信息一样了
方法名 | 作用 |
---|---|
ES3.DeleteKey() |
删除一条数据( 指定键 对应的数据 ) |
ES3.DeleteFile() |
删除一个数据文件 |
ES3.DeleteDirectory() |
删除一个目录 |
void Start()
{
ES3.DeleteKey("Chinar_Key", "ChinarFolder/ChinarFile3.es3"); // 从文件中删除一个键
ES3.DeleteFile("ChinarFolder/ChinarFile3.es3"); // 删除整个文件
ES3.DeleteDirectory("ChinarFolder/"); // 删除一个目录及其包含的所有文件
}
默认情况下,我们的数据是不被加密的
EasySave3 为我们提供了一种加密方式: AES 加密
有两种 使用方式
1. 编辑器设置:默认加密
2.ES3Settings
脚本类:动态加密
void Start()
{
//第一步:声明一个 ES3Settings 对象
ES3Settings settings = new ES3Settings();
//第二步:设置加密方式为AES
settings.encryptionType = ES3.EncryptionType.AES;
//第三部:设置密码:密码要求为`string`类型
settings.encryptionPassword = "ChinarPassword";
//第四步:使用 settings 对象的设置信息,进行加密保存
ES3.Save<Transform>("Chinar_Cube1", Cube1.transform, Application.dataPath + "/ChinarFile4.es3", settings);
}
再来看一下 默认加密
未完待续…
以上就是 EasySave3 的简单用法,更多用法请查看EasySave官方网站
仔细看 Chinar 的教程,可以免去看官方文档的烦恼,几乎重要用法都会讲到!
Chinar 提供一站式《零》基础教程 使有限时间 具备无限可能! |
Chinar 知你所想,予你所求!( Chinar Blog )
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: [email protected]
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址