feat(tools): 命令行白模构建——build_level.bat 一键生成UE5关卡

This commit is contained in:
2026-06-07 23:48:31 +08:00
parent acb211aec2
commit df99b36586
4 changed files with 422 additions and 28 deletions
+36 -18
View File
@@ -87,35 +87,53 @@ python main.py validate -i output/level_v01.json
**生成文件**: `output/validation_result.json`
### 第三步:UE5 编辑器内构建(需要 UE5 编辑器运行)
### 第三步:UE5 构建
在 UE5 编辑器 Python 控制台中执行:
有两种方式,**推荐使用命令行方式**(全自动,无需手动操作编辑器):
#### 方式 A:命令行一键构建(推荐)
```bat
REM 从项目根目录运行
tools\level-builder\build_level.bat
```
方式 A — Output Log Python 控制台:
exec(open(r"tools/level-builder/main.py").read())
main(["build", "-i", "output/level_v01.json"])
方式 B — 仅构建指定区域:
main(["build", "-i", "output/level_v01.json", "--zones", "Z1,Z3"])
方式 C — 增量构建(不清除已有 Actor):
main(["build", "-i", "output/level_v01.json", "--no-clear"])
**高级用法**:
```bat
build_level.bat --json output/v02.json --map LVL_SuburbanV02 # 指定 JSON 和关卡名
build_level.bat --no-quit # 构建后保留编辑器
build_level.bat --no-null-rhi # 显示编辑器窗口(调试)
build_level.bat --dry-run # 只打印命令不执行
```
**环境变量**:
- `UE5_ROOT` — UE5 安装目录(未设置时自动检测 5.7/5.6 常见路径)
**预期输出**:
```
[LevelBuilder] 加载 265 个 Actor 定义
[LevelBuilder] 清除 0 个已有 LVL_* Actor...
进度: 20/265 (20 成功, 0 失败)
...
[LevelBuilder] 构建完成!
成功: 265
失败: 0
日志: output/build_log.json
[LevelBuilder] SUCCESS: 265 | FAILED: 0 | TOTAL: 265
[LevelBuilder] ✅ 关卡已保存: /Game/Maps/LVL_SuburbanV01
```
**生成文件**: `output/build_log.json`
**生成文件**:
- `Content/Maps/LVL_SuburbanV01.umap` — UE5 关卡文件
- `tools/level-builder/output/build_log.json` — 构建日志
#### 方式 B:编辑器内手动执行
在 UE5 编辑器 Python 控制台中:
```
方式 B1 — Output Log Python 控制台:
exec(open(r"tools/level-builder/build_in_editor.py").read())
方式 B2 — File > Execute Python Script > 选择 build_in_editor.py
方式 B3 — CLI 方式(仅构建指定区域):
exec(open(r"tools/level-builder/main.py").read())
main(["build", "-i", "output/level_v01.json", "--zones", "Z1,Z3"])
```
### 第四步:生成搭建报告(离线,Claude 可执行)