Files
mapTools/README.md
2025-12-06 17:48:48 +08:00

81 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 关卡生成流水线
这个仓库包含一套从 Excel 数据自动生成 Unity Prefab 与 C# 关卡字典的脚本。核心流程由 `run_pipeline.py` 串联完成。
## 环境准备
- Python 3.9 及以上(在 Windows PowerShell 上测试)
- Excel 源文件(默认 `global.xlsx`)并符合既定的表格结构
- 依赖库:`pandas``openpyxl`
安装依赖:
```powershell
python -m pip install pandas openpyxl
```
## 快速上手
1. 将 Excel 文件(如 `global.xlsx`)与脚本放在同一目录。
2. 确认模板 Prefab默认 `Level80317.prefab`)存在。
3. 在 PowerShell 中运行:
```powershell
python .\run_pipeline.py --excel global.xlsx --sheet Sheet2 --start-i 80316
```
若不传 `--steps`,脚本会依次执行全部三步(抽取数据 → 生成 C# → 生成 Prefab
可通过 `--steps 1,2` 指定只运行前两步。
### 输出文件
- `found_*.xlsx`:步骤一扫描得到的坐标数据
- `generated_levels.cs`:步骤二生成的关卡字典代码
- `GeneratedPrefabs/LevelXXXX.prefab`:步骤三输出的 Prefab 文件
## 三个步骤详解
- **步骤 1`read_excel.py`**
- 自动补齐 Excel 第一列空白的地图号(从 `--start-i` 指定的值起)。
- 在 B~AA 列扫描“币”、“p”、“v”等标记提取坐标并输出成 `found_币.xlsx``found_p.xlsx``found_v.xlsx`
- 识别颜色填充的格子,将绿色写入 `found_方块.xlsx`,蓝色/橙色/粉色分别写入 `found_water.xlsx``found_wall.xlsx``found_jump.xlsx`
- **步骤 2`write_code.py`**
- 读取步骤一输出的多张 Excel按地图号分组。
- 生成 `Spawn` 配置,写入 `generated_levels.cs`。可在命令行通过 `--output-levels` 指定输出文件名。
- **步骤 3`make_prefab.py`**
- 以模板 Prefab 为基础,逐个地图替换 `Ground``Border``m_Tiles` 块。
- 若无对应坐标,自动写成 `m_Tiles: {}`
- Prefab 输出到 `GeneratedPrefabs/` 目录。
## 脚本内可调参数
- **`read_excel.py`**
- `columns_to_preview`:控制调试输出中预览的列数,必要时减少日志噪音。
- `GREEN_COLORS` / `BLUE_COLORS` / `ORANGE_COLORS` / `PINK_COLORS`:决定颜色识别的十六进制值,适配其他调色方案时需更新。
- `find_cells_with_currency_xlsx()``search_term``suffixes`:用于识别不同物件符号,扩展至新标记时修改此处。
- Excel 列段 `grid_columns`(默认 B~AA若表格布局变化或列数扩展需同步调整。
- **`write_code.py`**
- `FILE_P` / `FILE_V` / `FILE_COIN`:输入文件名常量,可在命令行前覆盖或直接修改常量。
- `LEVEL_PATH`Prefab 在 Unity 项目的目标路径模板,适配其他资源组织结构时更新。
- `generate_spawn_line()` 内的 `path``direction_map`:指定生成的 Prefab 引用与方向映射,新角色或朝向枚举需在此扩展。
- `boundary` 默认值与 `Spawn` 字段列表:若未来关卡数据结构变化,应相应调整模板字符串。
- **`make_prefab.py`**
- 顶部 `EXCEL_PATH``TEMPLATE_PREFAB``OUTPUT_DIR`分别控制输入表格、Prefab 模板和输出目录。
- `TILE_LINE` 模板中的 `m_TileIndex` / `m_TileSpriteIndex`:当新的 TileAsset/Sprite 索引出现时需同步修改。
- `replace_tilemap_by_gameobject_name()` 查找的 GameObject 名称(默认 `Ground``Border`):若模板结构不同,调整调用处的名称。
- Border 层 `tile_index` 分配:当前约定 water=2、wall=0、jump=1结合实际 Tilemap 资源可重新定义。
> **适配新任务**:如果未来 Excel 的 sheet 名称、列布局或颜色含义有变化,请同步更新上述常量/映射,必要时扩展 `read_excel.py` 对应的字段重命名逻辑(`df.rename(...)`。Prefab 模板层级或 Tilemap 名称变更时,也需更新 `make_prefab.py` 中的搜索关键字与 Tile 生成规则。
## 常用参数
- `--excel`: Excel 文件名。
- `--sheet`: Sheet 名称。
- `--start-i`: 填补地图号的起始值。
- `--template`: Prefab 模板路径。
- `--steps`: 需要执行的步骤序号(例如 `1,3``all`)。
- `--output-levels`: 生成的 C# 文件名。
## 常见问题
- **提示缺少某个库**:再次执行依赖安装命令。
- **没有生成 Prefab**:确认 `found_方块.xlsx` 存在且列名与脚本对应;模板 Prefab 名称无误。
- **Tile 未正确替换**:检查模板中 `Ground``Border` 的 GameObject 名称以及 `m_Tiles` 的结构是否发生变化。
更多命令行参数说明可执行:
```powershell
python .\run_pipeline.py --help
```