e87887b3bf8ecd9c3c79d0e982ed1dc7f1905b5e
关卡生成流水线
脚本集合会把 Excel 地图数据自动转成 Unity Prefab 与 C# 关卡字典,核心流程由 run_pipeline.py 串联。
环境准备
- Python 3.9 及以上(在 Windows PowerShell 5.1 上测试)
- Excel 源文件(默认
global.xlsx,需要遵循既定列结构) - 依赖库:
pandas、openpyxl
安装依赖:
python -m pip install pandas openpyxl
快速上手
- 将 Excel 文件(如
global.xlsx)放到仓库根目录下。 - 确保模板 Prefab(默认
Level90093.prefab)可用。 - 在 PowerShell 中运行:
如果不传
python .\run_pipeline.py --excel global.xlsx --sheet Sheet2 --start-i 80316--steps,脚本会顺序执行三个阶段(抽取数据 → 生成 C# → 生成 Prefab)。 通过--steps 1,2可以只跑前两步。
输出文件
found_*.xlsx:步骤 1 产出的坐标表(币 / p / v / 彩色格)generated_levels.cs:步骤 2 默认生成的关卡字典(可改名)GeneratedPrefabs/LevelXXXX.prefab:步骤 3 输出的 Prefab 文件
三个阶段
-
步骤 1(
read_excel.py)- 自动填补 Excel A 列的地图号(从
--start-i指定的编号递增)。 - 在 B~AA 列识别“币 / p / v”以及带方向的
pN、vE等标记,输出found_币.xlsx、found_p.xlsx、found_v.xlsx。 - 解析单元格填充色:绿色写入
found_方块.xlsx,蓝/橙/粉分别写入found_water.xlsx、found_wall.xlsx、found_jump.xlsx。 - 如需核对颜色值,可使用
inspect_cells.py指定单元格查看 ARGB 编码。
- 自动填补 Excel A 列的地图号(从
-
步骤 2(
write_code.py)- 读取步骤 1 的 Excel,按地图号聚合生成
Spawn配置。 - 默认输出到
Levels90001.cs,但run_pipeline.py会根据--output-levels参数覆盖(默认generated_levels.cs)。 LEVEL_PATH模板默认为Assets/Prefabs/Level/Level{map_id}.prefab,如 Unity 资源路径调整需同步修改。
- 读取步骤 1 的 Excel,按地图号聚合生成
-
步骤 3(
make_prefab.py)- 以模板 Prefab 为基准,替换
Ground与Border的m_Tiles数据。 - 如果某图层无坐标,自动写入
m_Tiles: {}以保持文件有效。 - Ground 使用 0/0 索引;Border 根据
found_water.xlsx(0/0)、found_wall.xlsx(2/2)、found_jump.xlsx(1/1)写入不同 tile 索引,可按项目资源调整。
- 以模板 Prefab 为基准,替换
可调参数
read_excel.pycolumns_to_preview:控制调试日志预览列数。GREEN_COLORS/BLUE_COLORS/ORANGE_COLORS/PINK_COLORS:定义可识别的填充色 ARGB 值。find_cells_with_currency_xlsx()的search_term及suffixes:扩展新符号时调整。grid_columns默认覆盖 B~AA,如表头有改动需同步更新。
write_code.pyFILE_P/FILE_V/FILE_COIN:输入文件名常量,可在运行前临时覆盖。LEVEL_PATH、boundary、direction_map:匹配 Unity Prefab 路径与方向枚举时修改。
make_prefab.py- 顶部
EXCEL_PATH、TEMPLATE_PREFAB、OUTPUT_DIR:控制输入表、模板与输出目录。 OLD_LEVEL_NAME:模板原始 Level 名称,替换节点名时会用到。TILE_LINE模板中的索引、replace_tilemap_by_gameobject_name()查找的 GameObject 名称,如 Prefab 结构变更需同步更新。
- 顶部
如需适配新的 Excel 布局或颜色含义,请同时更新相关常量与字段映射。Prefab 模板层级或 Tilemap 名称变更时,也需更新
make_prefab.py中的搜索关键字与 tile 索引分配。
常用命令行参数
--excel:Excel 文件名--sheet:Sheet 名称--start-i:填补地图号的起始值--template:Prefab 模板路径--steps:指定执行的步骤(如1,3或all)--output-levels:C# 输出文件名
辅助脚本
inspect_cells.py:快速查看 Excel 指定单元格的填充色与字体信息。编辑脚本顶部的FILE、SHEET、CELLS后运行:输出会列出 ARGB 颜色码(python .\inspect_cells.pynormalized字段)以及 openpyxl 能解析的原始索引,便于增补GREEN_COLORS等常量。
常见问题
- 缺少依赖:重新执行安装命令。
- Prefab 未生成:确认
found_方块.xlsx存在且列名与脚本一致,模板 Prefab 路径正确。 - Tile 未正确替换:检查模板中
Ground、Border的 GameObject 名称以及m_Tiles结构是否被修改。
更多参数说明可执行:
python .\run_pipeline.py --help
Description
Languages
C#
61.9%
Python
38.1%