68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
"""UE5 编辑器内白模关卡构建启动脚本。
|
|
|
|
使用方式:
|
|
1. 打开 UE5 编辑器
|
|
2. Window → Developer Tools → Output Log
|
|
3. 左下角下拉菜单切换到 "Python"
|
|
4. 粘贴执行:
|
|
exec(open(r"<项目绝对路径>/tools/level-builder/build_in_editor.py").read())
|
|
|
|
或者:
|
|
File → Execute Python Script → 选择此文件
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# ---- 配置 ----
|
|
PROJECT_ROOT = Path(r"E:/MiceCola/work/ChildHood")
|
|
LEVEL_JSON = PROJECT_ROOT / "tools/level-builder/output/level_v01.json"
|
|
# ---- 配置结束 ----
|
|
|
|
# 将项目路径加入 sys.path
|
|
TOOLS_DIR = PROJECT_ROOT / "tools"
|
|
LEVEL_BUILDER_DIR = PROJECT_ROOT / "tools/level-builder"
|
|
for p in [str(PROJECT_ROOT), str(TOOLS_DIR), str(LEVEL_BUILDER_DIR)]:
|
|
if p not in sys.path:
|
|
sys.path.insert(0, p)
|
|
|
|
# 检查 unreal 模块
|
|
try:
|
|
import unreal
|
|
except ImportError:
|
|
print("[错误] 未检测到 unreal 模块,此脚本必须在 UE5 编辑器 Python 环境中运行!")
|
|
print(" 请在 Output Log 中切换到 Python 控制台后执行。")
|
|
raise
|
|
|
|
# 检查 JSON 文件存在
|
|
if not LEVEL_JSON.exists():
|
|
print(f"[错误] JSON 文件不存在: {LEVEL_JSON}")
|
|
print(" 请先在命令行运行: python main.py parse -i ../../docs/technical/关卡-v01-搭建指南.md")
|
|
raise FileNotFoundError(str(LEVEL_JSON))
|
|
|
|
# 导入并执行构建
|
|
from builder.scene_builder import build_level
|
|
|
|
print(f"[LevelBuilder] 项目根目录: {PROJECT_ROOT}")
|
|
print(f"[LevelBuilder] JSON 数据: {LEVEL_JSON}")
|
|
print(f"[LevelBuilder] 开始构建...")
|
|
|
|
build_log = build_level(
|
|
json_path=str(LEVEL_JSON),
|
|
clear_existing=True,
|
|
zones=None, # 构建所有区域;如仅需部分区域改为 ["Z1", "Z3"]
|
|
)
|
|
|
|
if build_log:
|
|
ok = sum(1 for b in build_log if b.get("status") == "ok")
|
|
failed = sum(1 for b in build_log if b.get("status") != "ok")
|
|
print(f"\n[LevelBuilder] ========== 构建结果 ==========")
|
|
print(f" 成功: {ok}")
|
|
print(f" 失败: {failed}")
|
|
print(f" 总计: {len(build_log)}")
|
|
if failed > 0:
|
|
print(f"\n 失败列表:")
|
|
for b in build_log:
|
|
if b.get("status") != "ok":
|
|
print(f" ❌ {b.get('name', '?')}: {b.get('reason', '未知错误')}")
|