[游戏开发]Python版Excel数据配表导出工具系列 设计思路与目录

设计思路:

导表工程用Python编写

核心思路:

利用python版本的protobuf,把excel数据序列化成bytes,把二进制bytes文件拷贝到工程中使用,以我们项目Unity引擎为例,C#和Lua都有使用到bytes数据,使用C#的pb和Xlua的pb分别解析bytes文件即可得到配表数据。

为何选用Google Protobuf

Protobuf是一种支持跨语言的序列化和反序列化数据工具

protobuf优势:压缩数据,占内存小。跨语言且主流语言都可使用。

导表流程设计思路:

  1. excel数据转csv数据
  2. csv数据写入到一个python脚本中,下面用csv_python代替
  3. 利用excel列数据生成一个带有列名的proto
  4. 使用protoc工具使用第三步的proto生成python版本的pb2文件
  5. csv_python引用pb2序列化数据成bytes文件
  6. bytes拷贝到项目
  7. 项目内使用对应版本的pb反序列化数据

        上面7步设计思路是一个非常笼统的描述,因为在实际开发过程中,要考虑无数种问题,例如用户如何输入,如何提示用户输入,是否支持一次输入多个表,是否支持一键全表导出,客户端和服务器数据拆分,生成统一读表脚本,很显然,需求是复杂且多样性的,因此在开发过程中,一定要让代码流程化,像车间一样分步工作,保证代码可追查,能重复利用功能一定要注意通用性。

工程启动方式

        查看源码使用vscode启动工程,策划等用户使用cmd脚本启动工程,两者是有区别的。

区别1:启动后的当前路径不同

        工程启动当前目录是start.py脚本所在目录,cmd启动当前目录时cmd所在目录,因此在开发python工程中,涉及到生成、获取文件等需要相对路径的操作,都要写一个统一接口做区分吗,还有个方法时修改工程当前目录,这个我暂时没验证。

区别2:Unity工程路径不同

        用户cmd启动导表工程,由于每个人的导表工具路径不一致,使用export_setting.bat配置各个文件夹的路径,并由run.cmd读取该export_setting传入到python工程中,参数作为sys.argv数组的形式读取。如果是vscode源码启动,没有这个sys.argv怎么办?我们可以在start.py启动时进行判断,如果sys.argv的数量为1,证明是vscode启动,例如下面的代码

    sys.argv = [0] * 13
    sys.argv[0] = "./TableCreater/Script/start.py"
    sys.argv[1] = "2"
    sys.argv[2] = "./../../"
    sys.argv[3] = "./../../../EnumData"
    sys.argv[4] = "./../../../AllData"
    sys.argv[5] = "./../../../AllData/client/cs_pb"
    sys.argv[6] = "./../../../AllData/client/cs_script"
    sys.argv[7] = "./../../../AllData/client/cs_bytes"
    sys.argv[8] = "./../../../Project/ClientProject/CS/Table/AutoGen/TablePb"
    sys.argv[9] = "./../../../Project/ClientProject/CS/Table/AutoGen"
    sys.argv[10] = "./../../../Project/ClientProject/CS/Table/AutoGen/TableBytes"
    sys.argv[11] = ""
    sys.argv[12] = "02_UI表.xlsx"

区别3:

        run.cmd启动python工程只是第一步,我们还可以创建更多的cmd文件调用run.cmd文件,并向run.cmd传入不同参数,实现python工程输出不同的语言文件

run_csharp.cmd启动输出C#

run_all.cmd代表出版本

run_common.cmd代表导出客户端和服务器

总目录

[第一篇]部署VSCode与Python版本选择

[第二篇] [打表流程描简述]

[第三篇] [打表流程第一步] 将excel文件转CSV并输出到CSV目录

[第四篇] [打表流程第二步]使用CSV数据并生成proto

[第五篇] [打表流程第三步]protoc-gen-lua.bat生成lua版pb文件

[第六篇] [打表流程第四步]生成python版pb2文件

[第七篇] [打表流程第五步]使用pb2生成一个用于导出bytes的python脚本

[第八篇] [打表流程第六步]执行自定义python脚本生成bytes文件

[第九篇] [打表流程第七步]生成统一的读表接口

[第十篇] [打表流程第八步]业务层读表

[第十一篇] 额外小知识与完结语

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little丶Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值