简单使用Lua实现表格动态解析

在游戏开发里,游戏配置是必不可少的一项。表格式配置是一种非常常见的格式,简单易用,支持excel等表格工具编辑,深受广大策划同学的喜爱。这里介绍一种简单使用Lua来做表格配置的方式。

首先是表格的格式,为了简单起见没有采用直接解析excel格式的方式来做,而采用了csv格式,个人喜好,采用制表符作为分隔符。生成出来的格式大概如下
(这里推荐使用OpenOffice来进行编辑):

ID\tName\tDescription\n
1\tTom\t他是一个工人\n

解析方式也比较简单,首先读入整个表格数据,根据换行符将整个字符串切割为不同的行,然后解析每一行数据,简单代码示例如下:
code_1

解析每一行代码同理,将字符串按照分隔符切割开,然后按照二维数组存储即可。但是我们要做的是游戏配置,所以这样还是不够的。这里定一个规则,那就是第一行为配置标题行,从第二行起,按照第一行的标题来进行key,value的对应存储,第一行数据并不做实际存储,简单代码示例如下:

code_2

一个简单的表格解析看起来就完成了,但是这还是不能满足我们的要求,还得能做些简单的解析,于是我们再引入一行数据类型行,于是表格将变为下面这样(使用OpenOfficeCalc打开):

table_1
解析代码稍作修改,除了要保留第一行的标题行,还需要保留第二行的类型行,然后在存储数据前,将数据丢给一个解析模块,保存解析完后的结果,示例如下:
code_3

这里将解析单独抽象出来,并使用了可扩展的结构,这样以后再增加新的类型也很容易的解决了,解析的函数也简单贴下:

code_4


这样,一个方便易用的表格配置就完成了,也许有人会说csv不好用啊,只能支持简单的类型啊,还是excel表好用,还可以加入公式等等。但是Lua是个很强大的工具,借助它我们也可以实现类似excel的公式功能,这个等之后有空再介绍了。

发表评论

电子邮件地址不会被公开。