数据持久化的几种方式

数据持久化的方式有很多,最近只学了几种,在此一一列出来,记录下自己的成长,以下几种方式都是在编辑器模式下直接运行的,不需要游戏运行。

1.首先是Json格式的写入和读取

需要存储的数据类一定要加上[Serializable]序列化标签,Data类里面有名字和一个SubData的集合,SubData类里面则包括常用的几个数据类型的字段,最上面的LoadJson是一个可以在编辑器菜单栏直接执行的扩展方法。

打印的log如下图,第一行就是存储在json里的内容,后面几行就是读取json后输出的内容数据持久化的几种方式_第1张图片

2.通过Json使PlayerPrefs存储复杂结构

数据持久化的几种方式_第2张图片

由于我写的是在编辑器模式下测试的代码,所以用的是EditorPrefs,如果在游戏运行中的话就是用的PlayerPrefs。

https://blog.csdn.net/qq_42010059/article/details/84934009 我写的另一篇文章里有写相同点和区别以及EditorPrefs的一个坑。

读取的方式和Json差不多,为了能存储成功数据,所以用了try...catch...来判断是否出错,这种方式解决了unity自带的PlayerPrefs只能存储简单数据的不足。

下图是打印的log数据持久化的几种方式_第3张图片

3.在dataPath下读写文本

数据持久化的几种方式_第4张图片

这种方式是通过创建text文本,来写入和读取文本里的内容,先定义文本路径,再判断是否存在该文本。

https://www.cnblogs.com/mrxy/p/8057657.html 解释了string和stringBuilder的区别。

接着就是写入文本和读取文本了,下图是log和文件位置,也就表明Application.dataPath是Assets文件夹下的路径。数据持久化的几种方式_第5张图片数据持久化的几种方式_第6张图片

4.在persistentDataPath下读写文本并打开persistentDataPath目录

数据持久化的几种方式_第7张图片数据持久化的几种方式_第8张图片

由于unity打包发布后是没有Assets/目录的,因此在真实环境下数据是保存在Application.persistentDataPath下的,但在unity编辑时如果也将数据存储在这个目录下,要查看的话就会比较麻烦,因此在编辑时一般都会将数据存储在Application.dataPath下,其他步骤和dataPath的读写方式一样。但如果还是想要查看Application.persistentDataPath的路径的话,就用EditorUtility.RevealInFinder(Application.persistentDataPath)来打开Application.persistentDataPath目录。

下方是log和test.txt的位置

数据持久化的几种方式_第9张图片数据持久化的几种方式_第10张图片

 

以上就是我所学到的几种数据持久化的方式,如有错误,望能不吝赐教。

你可能感兴趣的:(成长记录,unity数据存储)