完整课程入口:996 全套课程体系 | Lua 学习路径 | 幂尔框架 mirs.cn
策划给的 Excel、美术给的命名混乱的图片目录、运营要的数据报表——这些批量处理任务用 Python 做最合适;而游戏内只认 Lua 表。Lua+Python 协作的分工:Python 负责"外部格式到内部格式"的转换与校验,Lua 负责运行时读取。这条管线适用于配置转换、资源清单生成、日志批量分析。
import openpyxl, json
wb = openpyxl.load_workbook("item.xlsx")
ws = wb.active
head = [c.value for c in ws[1]]
items = {}
for row in ws.iter_rows(min_row=2, values_only=True):
if row[0] is None:
continue
items[row[0]] = dict(zip(head, row))
with open("item.lua", "w", encoding="utf-8") as f:
f.write("return " + json.dumps(items, ensure_ascii=False, indent=1))
生成的 item.lua 以 return {...} 结尾,游戏内 local cfg = require("item") 直接加载。转换脚本里做三件事:id 唯一性校验、必填列非空校验、数字列类型转换——把校验前置到构建期,游戏内就不用防脏数据。
转换产物进游戏前再过一遍 Lua 侧冒烟:加载配置、抽样断言字段类型、统计条目数与源文件行数比对。两侧校验都过才允许入库,单侧通过不算通过。
转换脚本接进 CI(前篇 GitHub Actions 流水线):策划提交 Excel 到仓库,流水线自动跑转换与校验,产物进版本库。全流程无人工参与,配置更新从"找程序转表"变成"策划自己提交"。Python 与 Lua 各守一段管线,跨语言协作的关键不在语言互通,而在中间格式的定义与校验前置——这两件事定了,工具链就能长期自转。
Python 侧统一 3.10 以上版本,依赖用 requirements.txt 锁定(openpyxl、pandas 按需);读写文件一律显式 UTF-8 编码,Windows 下默认 GBK 是转换乱码的头号来源。Lua 产物文件同样显式 UTF-8 无 BOM 输出,带 BOM 的配置在部分 Lua 加载器里会报首行错误。转换脚本的所有输出都带统计行(转换条数、跳过条数、耗时),接进流水线后每次运行的数字都留档,配置管线的每一次变化都有迹可循。nn## 推广场景nn同一套管线可平移到三类任务:公告与客服话术的 Excel 转 Lua 表、怪物刷新点坐标的批量导入、内挂拾取规则的生成。脚本参数化后(输入文件、输出文件、表头映射都做成命令行参数),一套代码服务全部转换需求,维护点只有一处。