android double转string_独立游戏人:基于python的excel配置表转json转csharp实体类工具...

01938aab-e2b3-48a0-bf79-734f4fc7d860

前情提要

昨晚发布了一篇入门级的游戏配表方案“独立游戏人:unity游戏制作——Excel转json配表方案“”,很多小伙伴表示不够自动化啊。本着有需求就要有实现的想法,今天小编就再研究一下这个自动化的工具。

需求

  • 使用Excel或WPS表格配置和修改,保存为xls文件
  • 使用python制作工具,运行后将根据Excels文件夹中的所有xls文件自动生成数据配置类。

正文

为啥要用python呢?python这门语言,对于操作文件来讲,是非常好用的。

首先是一些准备工作:

  • 安装python3
  • unity中导入LitJson.dll(文末会提供)
  • 建立文件夹结构,其中xls文件夹用来存放excel表格,json文件夹用来放生成的json文件,cs文件夹用来放生成的实体类。
4897e1515503478d908ea9ff71a2cb53

然后我们来创建一个命名为XXXConfig.xls表格文件(暂时没有支持xlsx的表格)

表格内部结构如下图:第一行是变量名(转json的时候会变成小写,所以请一律小写)

第二行是对当前列的解释,对于转换来说没有什么用,只是为了方便阅读

第三行用来标记当前列数据类型,也是用来生成csharp实体类时创建类型的依据(暂时只支持int、string、double)

第四行以下就是数据了。

另外,为了方便读取,我们默认第一列都写id,用来作为实体类中Dictionary的Key值

ddf30ca08df14da1909682390ac480ee

之后,我们创建名e2jsonmain.py的python文件,文件引入os、xlrd、collections、json、codecs库

7e605bed504e43018926e2fd9ab87c75

接下来写出xls、json、cs文件夹的路径

381fb216e84d43baa86a9cd7f9c33189

然后我们创建Unity实体类的模板,python的字符串用起来很不习惯,就用这种笨笨的+=符号来写吧。另外,我没有写换行符号之类的,所以最后生成的实体类代码都在第一行,如果你想提升可读性,那就自己加上换行符吧。我们来看一下这个类模板:其中有一些占位符,在生成的时候会被替换掉,比如ClassName、DataName、DicName,后面会根据xls的名字来替换掉这些名字。再后面Variables占位符会根据xls中第一行的变量名来生成变量来替换它。

0252aa301a424a6189b5cffeb85da241

再接下来,小编封装了一个长长的没有多少注释的代码,他的作用就是将一个xls文件转换成json和csharp实体类,主要的内容是使用xlrd解析Excel表,然后使用json库将他转化为json字符串,然后用os库将字符串写入文件。同样的使用模板生成csharp代码块。这一部分有一些很容易出错误的细节,感兴趣的同学可以在文末链接里获取代码。

5f9eafc6902c4b5ea4b582ad316bb236

函数准备好了,接下来用os.listdir遍历所有excel,使用函数处理就好了。

105c6feea62d4c23a1f362219ff39775

命令行运行e2jsonmain.py

1540aba82a3c495dab733dd886d5dbda

然后就可以生成了json和CSharp实例类了。

fef6699e4e574089ba16468cb9c0907c

最后再执行一次手动操作,将生成的json文件都移动到Resources文件夹中。

CardConfig.cs实例类中提供了Dictionary,以id为键。所以,在代码里就可以将CardConfig.cs实例化,然后从Dictionary中取数据了。

78998406-a9db-4b4b-8105-0731bc9a2dbb

小结

python的文件操作给游戏开发提供了很大的便利,小编虽然用了一天的时间来研究这个东西,但是,以后给小编的操作带来的便利性,可以节省更多的时间哦。

因为是第一次写,所以还有很多不足的地方,请大佬们多多指教。

最后附上文件地址:

链接:https://pan.baidu.com/s/1RLNV64FGyRoszYioM_IAyg

提取码:rlwy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值