本人新手,第一次做独立游戏,在选择unity存储数据的时候,查阅了一些资料。一共有这么几种形式,CSV、XML、json、sqllite、scriptable-object。下面一一说明:
CSV:是一种逗号来分割的纯文本文件,每个字段用“,”隔开,每一段末尾有/n 。制作者打开这个文件,然后按照“,”和“/n”来将获得的数据变成自己想要的格式读取就好了,比如二维数组。
优点:纯文本很小
缺点:每个值在读取的时候无法知道代表什么意义,完全是按照这个值在数据中的位置来定义他的意义的。这就造成了每个值在数据中的位置都是有意义的,当策划在删表或者增表的时候,有时候会让中间的值增加或者减少,那这样程序就需要去修改后面的值得index。很麻烦,一种解决办法是不让删,只新增,而且只在表的最后新增,这种治标不治本,会让表很冗余,策划也不好维护,因为很多时候有很多管一个功能的值隔很远。
XML:数据采用key-value的形式存放,就是说你如果要查找英雄名称,程序就是类似找name这么一个值,程序能看明白自己在干什么。
优点:不清楚
缺点:看起来好像比较复杂,里面有很多感觉平时用不到的功能,而且比纯文本大一些
Json:数据采用key-value的形式存放。
优点:纯文本,也很小
缺点:不清楚
SQlite:感觉是最好的一种形式,没有仔细研究
scriptable-object:unity自带的一种存储数据的方式
优点:读取最快
缺点:大数据量不好处理
最后选择了json文件的存储方式。选择之后第一步就是寻找怎么读取这个json文件,运用了litjson这个工具,从https://www.youtube.com/watch?v=OyQQ-7-22Hw这个视频中学来的。
第二步是配表之后怎么将数据变成json,因为平时都是用的EXCEL所以去网上搜索一了转换工具,选择了功能最为强大的一个https://github.com/koalaylj/xlsx2json
选择他的主要原因是游戏开发过程中会有很多时候会用到多维数组,最简单的转换工具全部是直接将EXCEL转化为json,你里面就是有数组他也不会管,全部是字符串的形式,这样的话就需要程序去再一次加工和处理,而且看起来也不直观,不明白是什么东西。这个工具可以将数据转化为带数组的带对象的各种数据格式,读取会很方便。
这个工具是在nodeJS下开发的,需要下载一个nodeJS到自己的电脑上,然后跟着里面的教程做就好,重要的是记得在命令行中打开下载下来的文件,然后输入npm install。然后EXCEL只能有1个sheet,不然报错。