75 lines
3.9 KiB
Markdown
75 lines
3.9 KiB
Markdown
# Unity 关卡场景四阶段生成流程
|
|
|
|
每个新关卡都按“设计选择 → 组件拆分 → 3D 资产 → Unity 场景”推进。每一阶段都有输入、输出和状态登记;没有完成上一阶段时,不进入下一阶段。
|
|
|
|
## 1. 生成设计图并选择方案
|
|
|
|
根据当前关卡要求维护 `battlefield_design_prompts.json`,用项目图像生成工具生成多张总览方案。总览图只表达路线、地表和组件类别,不直接作为 Unity 贴图。
|
|
|
|
```powershell
|
|
python Tools/generate_battlefield_designs.py --design all
|
|
python Tools/battlefield_scene_pipeline.py status
|
|
python Tools/battlefield_scene_pipeline.py select A
|
|
```
|
|
|
|
生成回执和选择结果写入 `battlefield_scene_manifest.json`。人工在 `Doc/Design/Scene/Battlefield/` 查看方案后,才执行 `select`。
|
|
|
|
## 2. 按方案拆分组件设计图
|
|
|
|
选中的总览图拆成独立地表图和组件图,输出到 `Doc/Design/Scene/Battlefield/<design>/`。组件类型先与资源库匹配:如果 `AIClient/Assets/Bundles/` 已存在同名 Unity Prefab,则登记为 `generationStatus: reused`,跳过该组件的新设计图;没有现成 Prefab 的组件才调用图像生成。
|
|
|
|
```powershell
|
|
python Tools/generate_battlefield_components.py --design A
|
|
```
|
|
|
|
默认复用已有组件。需要刻意重做某个组件时使用:
|
|
|
|
```powershell
|
|
python Tools/generate_battlefield_components.py --design A --force-new-components
|
|
```
|
|
|
|
组件拆分完成后先审核地表图和组件图,再进入 3D 阶段。组件复用路径、生成状态和设计图路径都写回 manifest。
|
|
|
|
## 3. 根据新设计图生成 3D 模型
|
|
|
|
只有新组件才执行图生 3D;复用组件直接使用 manifest 中的 `existingPrefab`/`prefab`。新组件按统一链路生成:
|
|
|
|
```text
|
|
组件设计图
|
|
→ Hunyuan 3D 50k GLB
|
|
→ Blender 减面、重拓扑、UV 与 XPbr 烘焙
|
|
→ AIClient/Assets/Bundles/Scenes/.../<type>/<type>.fbx + 贴图 + Prefab
|
|
```
|
|
|
|
每个组件的模型路径、目标面数、烘焙回执和 Prefab 路径必须登记到 manifest。FBX 遵循 Y-up、底面中心原点、局部 `-Z` 正面;导入和 Prefab 制作只能走 Unity Pipeline。
|
|
|
|
## 4. 生成 Unity 场景并交给人工审核
|
|
|
|
场景装配脚本读取 manifest,把独立地表、路线、出生点/终点和组件 Prefab 保存为总 Prefab。审核场景再从总 Prefab 生成持久化 `.unity`,加入固定 `ReviewCamera`、`ReviewKeyLight` 和 `ReviewLabel`。
|
|
|
|
```powershell
|
|
$project = 'D:/UD/AI/AIGame/AIClient'
|
|
unity command --project-path $project run_script --file AgentScripts/BuildBattlefieldScene.cs --entry BuildBattlefieldScene.Build
|
|
unity command --project-path $project run_script --file AgentScripts/BuildBattlefieldScene.cs --entry BuildBattlefieldScene.VerifyBuilt
|
|
unity command --project-path $project run_script --file AgentScripts/BuildSceneReview.cs --entry BuildSceneReview.BuildAndOpenReview
|
|
```
|
|
|
|
审核输入由 `scene_review_manifest.json` 指定:
|
|
|
|
- `sourcePrefab`:第 4 阶段装配出的总 Prefab。
|
|
- `outputScene`:审核场景的 `.unity` 路径。
|
|
- `cameraPosition`、`cameraTarget`:固定审核机位,便于不同版本比较。
|
|
- `reportPath`:生成结果和审核步骤记录。
|
|
|
|
人工审核 Hierarchy、Scene View 和 Game View,重点检查组件穿插、悬空、朝向、地表碰撞和路线可读性。审核场景只用于编辑器审阅,不加入正式 Build Settings,也不由运行时代码创建。
|
|
|
|
## 一键编排与状态门
|
|
|
|
四阶段可以由编排器按顺序执行。它默认复用已有组件,只打印第 3 阶段的模型任务,不会在模型未登记前调用 Unity:
|
|
|
|
```powershell
|
|
python Tools/run_battlefield_scene_pipeline.py --design A --dry-run
|
|
```
|
|
|
|
确认设计和组件图后,去掉 `--dry-run`;需要重做设计或组件时分别使用 `--force-design`、`--force-new-components`。Unity Editor 和 Pipeline 运行后,再加 `--run-unity` 执行第 4 阶段。
|