hello各位,我又回来了~
上次发布工具后,得到了一些反馈,所以这几天给工具做了下升级~
老版本地址
http://www.xuanyusong.com/archives/3940
本次更新的内容有:
1.json添加精简格式,减小文件容量
2.支持二进制导出格式
3.添加联合主键功能
4.添加批注功能,可设置字典的默认key集合,并根据集合批量初始化单元格
5.添加plist和oc导出格式
现在做事情B格要高,才会受关注,所以我给工具起了个霸气的名字——滤查表。赞同我的请回复666~XD
下面介绍一下新功能:
json格式分为易读和精简两个版本,可通过bat中的第三个命令行参数控制,该参数可缺省,默认为0,此时为易读模式,若大于0,则导出精简模式,例:
导出后就是这个样子了
二进制格式应该不用过多解释吧,很常用的存储方式,读取效率高,占用空间少,唯一的缺点就是可读性差,不好调试。我在工具中写了lua、java和C#三种语言的解析接口,都放在bin目录中,可根据需要自行放到工程中。
解析后,java会返回一个ArrayList或者HashMap(根据主键设置),lua会返回一个Table,数据格式基本没有变化,只是java没有声明新的类,全部都存在哈希表中。通过读取二进制获得的数据,在使用上会比老方法变扭些,因为看不到数据(不过有打印接口,可以动态查看),可能会频繁查看excel表,但胜在运行效率高,如何取舍就看各位的喜好了~
最后说说很多人(包括松松)跟我提到的联合主键,因为我之前使用数据库不是很多,所以在工作中没接触过联合主键,但听他们的描述后,觉得还是个非常给力的功能,所以决定吸纳到滤查表中XD
所谓联合主键,就是可以通过某行数据的其中几个字段,定位到该行,从而获取其全部数据,相当于几个联合主键凑在一起,就可以起到主键的索引作用,这几个字段的表头就是该表的联合主键。
上图中的name和className就是该表的联合主键,如果你在程序中获得了Leonard和classHuman两个参数,就可以通过联合索引直接取到该行的数据(java是对象,lua是Table),作用和主键是一样的,时间复杂度也是O(1)。至于联合查找的接口:java和lua格式导出后会自动生成,通过unionGet(java)和表名+Get(lua)方法可取到索引结果,参数就是所有联合主键的对应值。二进制也会自动生成联合主键,但是没有公共的索引接口,需要用户在unionTable中通过手动生成的联合键查找,生成规则为所有主键以字符串形式拼接,中间以下划线分割,例如上图中的联合键就是:Leonard_classHuman。至于unionTable,是在解析二进制文件后生成的,会保存在DBBinary.s_unionTable中。json格式我没有写解析方法,主要是因为json的原生支持语言是js,而我不会写js代码,所以就没做,至于其它语言,可以从它们各自生成的解析代码中拷贝。
设置方法:选中要设为联合主键的列,见下图
下图中红框区内的按钮就是联合主键操作键,set是将所选列设为联合主键,del则是取消
代码中的索引函数
lua联合索引方法
java联合索引方法
二进制在java中的应用范例
二进制在lua中的应用范例
再有就是我写的二进制读取方法只是针对滤查表的,其实从设计角度讲,应该是先写出基础的二进制读取,再在上层针对具体需求进行封装,但是我觉得自己写的方法并不是很完美,加上很多语言都有读取二进制的API,所以就没敢越俎代庖~有雄心壮志的同学可以自己封装一下~
小齐童鞋之前提到一个问题,就是策划手动填写字典的key值容易出错,因此我加了一个批量生成字典单元格的功能,使用方法如下:
假如我们有一列单元格,类型为字典,并且所有行的key都是min和max(固定的),那么我们给该列的类型单元格添加批注,内容就是“min;max”,见下图
然后确保该列的单元格都为空(有内容的单元格不会有效果),点击InitDictCells按钮,此时该列的所有单元格就都被初始化为“min=0;max=0”了,策划只需将0改为真实值即可,这样便大大降低了出错几率。此外可通过点击ShowComment按钮显示所有的批注,虽然Alt+R+A也有类似功能,但它是显示全部的批注,而ShowComment只显示第二行(类型行)的批注。最后感谢小齐的建议哈~
再次点击ShowComment就会隐藏批注。
滤查表下载地址
http://pan.baidu.com/s/1eSvzgaQ
全部文件
- 本文固定链接: https://www.xuanyusong.com/archives/3971
- 转载请注明: 失落的宇宙 于 雨松MOMO程序研究院 发表
有DataConver.exe源码吗?
想动态写入数据最后存入本地,用原来的法方解析数据就凉了,除了重写个解析方法还有什么途径吗
关于逗号的问题:
在装备参数中,有一项是介绍,这个介绍文本中就会含有逗号了,正常的CSV表格可以用“”来包住含逗号的语句,再进行解析。
然而大大提供的工具,中间步骤的CSV转.bin文件的时候,并不能识别“”。
不知怎么解决呢?
松总,得创新下了,我在寻找一个直接使用 UnityEditor 读取 excel 表 并且能 导出 json,如果可以强大一点还能直接修改 excel 源文件,例如调试数值的时候比较方便.
求支持中文啊,不然真的不是很方便
可以支持中文,只要把导出的csv文件转成utf-8的格式,然后再运行bat导出,是可以正常导出中文的
可以 转成utf8中文不是乱码了