修改readme.md

This commit is contained in:
suqin
2025-12-07 20:38:02 +08:00
parent 80afbfd347
commit e5919d549a
31 changed files with 56 additions and 23880 deletions

106
README.md
View File

@@ -1,10 +1,10 @@
# 关卡生成流水线
这个仓库包含一套从 Excel 数据自动成 Unity Prefab 与 C# 关卡字典的脚本。核心流程由 `run_pipeline.py` 串联完成
脚本集合会把 Excel 地图数据自动成 Unity Prefab 与 C# 关卡字典核心流程由 `run_pipeline.py` 串联。
## 环境准备
- Python 3.9 及以上(在 Windows PowerShell 上测试)
- Excel 源文件(默认 `global.xlsx`)并符合既定的表格结构
- Python 3.9 及以上(在 Windows PowerShell 5.1 上测试)
- Excel 源文件(默认 `global.xlsx`,需要遵循既定列结构
- 依赖库:`pandas``openpyxl`
安装依赖:
@@ -13,68 +13,74 @@ python -m pip install pandas openpyxl
```
## 快速上手
1. 将 Excel 文件(如 `global.xlsx`与脚本放在同一目录。
2.模板 Prefab默认 `Level80317.prefab`存在
1. 将 Excel 文件(如 `global.xlsx`放到仓库根目录
2.模板 Prefab默认 `Level90093.prefab`可用
3. 在 PowerShell 中运行:
```powershell
python .\run_pipeline.py --excel global.xlsx --sheet Sheet2 --start-i 80316
```
不传 `--steps`,脚本会依次执行全部三步(抽取数据 → 生成 C# → 生成 Prefab
通过 `--steps 1,2` 指定只运行前两步。
```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 文件
- `found_*.xlsx`:步骤 1 产出的坐标表(币 / p / v / 彩色格)
- `generated_levels.cs`:步骤 2 默认生成的关卡字典(可改名)
- `GeneratedPrefabs/LevelXXXX.prefab`:步骤 3 输出的 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`
## 三个阶段
- **步骤 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 编码。
- **步骤 2`write_code.py`**
- 读取步骤一输出的多张 Excel按地图号分组
- 生成 `Spawn` 配置,写入 `generated_levels.cs`。可在命令行通过 `--output-levels` 指定输出文件名
- **步骤 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 资源路径调整需同步修改。
- **步骤 3`make_prefab.py`**
- 以模板 Prefab 为基础,逐个地图替换 `Ground``Border``m_Tiles`
- 若无对应坐标,自动写`m_Tiles: {}`
- Prefab 输出到 `GeneratedPrefabs/` 目录
- **步骤 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 索引,可按项目资源调整
## 脚本内可调参数
## 可调参数
- **`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若表格布局变化或列数扩展需同步调整
- `columns_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.py`**
- `FILE_P` / `FILE_V` / `FILE_COIN`:输入文件名常量,可在命令行前覆盖或直接修改常量
- `LEVEL_PATH`Prefab 在 Unity 项目的目标路径模板,适配其他资源组织结构时更新
- `generate_spawn_line()` 内的 `path``direction_map`:指定生成的 Prefab 引用与方向映射,新角色或朝向枚举需在此扩展。
- `boundary` 默认值与 `Spawn` 字段列表:若未来关卡数据结构变化,应相应调整模板字符串。
- `FILE_P` / `FILE_V` / `FILE_COIN`:输入文件名常量,可在运行前临时覆盖
- `LEVEL_PATH`、`boundary`、`direction_map`:匹配 Unity Prefab 路径与方向枚举时修改
- **`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_PATH`、`TEMPLATE_PREFAB`、`OUTPUT_DIR`:控制输入表、模板输出目录。
- `OLD_LEVEL_NAME`:模板原始 Level 名称,替换节点名时会用到
- `TILE_LINE` 模板中的索引、`replace_tilemap_by_gameobject_name()` 查找的 GameObject 名称,如 Prefab 结构变更需同步更新
> **适配新任务**:如果未来 Excel 的 sheet 名称、列布局或颜色含义有变化,请同更新上述常量/映射,必要时扩展 `read_excel.py` 对应的字段重命名逻辑(`df.rename(...)`。Prefab 模板层级或 Tilemap 名称变更时,也需更新 `make_prefab.py` 中的搜索关键字与 Tile 生成规则
> 如需适配新的 Excel 布局或颜色含义,请同更新相关常量与字段映射。Prefab 模板层级或 Tilemap 名称变更时,也需更新 `make_prefab.py` 中的搜索关键字与 tile 索引分配
## 常用参数
- `--excel`: Excel 文件名
- `--sheet`: Sheet 名称
- `--start-i`: 填补地图号的起始值
- `--template`: Prefab 模板路径
- `--steps`: 需要执行的步骤序号(例如 `1,3``all`)。
- `--output-levels`: 生成的 C# 文件名
## 常用命令行参数
- `--excel`Excel 文件名
- `--sheet`Sheet 名称
- `--start-i`填补地图号的起始值
- `--template`Prefab 模板路径
- `--steps`:指定执行的步骤(如 `1,3` 或 `all`
- `--output-levels`C# 输出文件名
## 辅助脚本
- `inspect_cells.py`:快速查看 Excel 指定单元格的填充色与字体信息。编辑脚本顶部的 `FILE`、`SHEET`、`CELLS` 后运行:
```powershell
python .\inspect_cells.py
```
输出会列出 ARGB 颜色码(`normalized` 字段)以及 openpyxl 能解析的原始索引,便于增补 `GREEN_COLORS` 等常量。
## 常见问题
- **提示缺少某个库**:再次执行依赖安装命令。
- **没有生成 Prefab**:确认 `found_方块.xlsx` 存在且列名与脚本对应;模板 Prefab 名称无误
- **Tile 未正确替换**:检查模板中 `Ground``Border` 的 GameObject 名称以及 `m_Tiles` 的结构是否发生变化
- **缺少依赖**:重新执行安装命令。
- **Prefab 未生成**:确认 `found_方块.xlsx` 存在且列名与脚本一致,模板 Prefab 路径正确
- **Tile 未正确替换**:检查模板中 `Ground`、`Border` 的 GameObject 名称以及 `m_Tiles` 结构是否被修改
更多命令行参数说明可执行:
更多参数说明可执行:
```powershell
python .\run_pipeline.py --help
```