之前使用CocoStudio的数据编辑器生成json格式的数据。
后来用着不是很方便(有时候会生成两份一样的数据),就自己写了一个工具直接生成lua表,比需要加载json然后还要注意区分json格式和table要好一些。所以分享一下。
excel的格式是xlsx,里头的具体数据格式与CocoStudio数据编辑器所需格式一样即可。
该工具使用python写成,需要python2.7(这个无需当心,因为cocos本身需要),还需要一个解析excel表格的插件叫做xlrd,请自行下载一下。
excel表不要起中文名称,需要英文名,例如ratio.xlsx会在当前目录下生成ratio.lua这样的文件。
总体思路是,所有这些生成的策划配置数据自动生成后,由一个自动生成的Tables.lua文件统一管理,其他任何地方都不要尝试直接访问里头的ratio.lua(即不要写 local ratio = import("…youPath.ratio")这样的代码,而是直接 local Tables = import("…youpath.Tables")),然后利用Tables中的函数访问这些表格数据Tables.ratio(1,“概率”)即可访问ratio表的key为1的某个字段“概率”。
里头我还专门对多语言的本地化做了支持,由于项目原因,里头已经写死了的strings_i18n.xlsx生成的表格就是中文版本的字符串数据,strings_i18n_en.xlsx是英文版本,以此类推(呵呵,总共也就支持三种,还有一种繁体)。
至于strings_i18n.xlsx应该如何定义,我在工具中已经加了说明。总之字符串的访问我希望是能达到这么个效果Tables.getStringFromTable(Tables.enumHintForAlert)。其中前面的函数可以匹配游戏中的当前语言从而选择不同语言的字符串(但无需我在调用的地方显式指明语言),里头的参数我不希望使用1,2,3这样的数字方式访问字符串,而代替是一个枚举。至于怎么实现,可以看看我工具中的说明。