diff --git a/.claude/agent-memory/game-dev/MEMORY.md b/.claude/agent-memory/game-dev/MEMORY.md index 177b2a6..01cc23e 100644 --- a/.claude/agent-memory/game-dev/MEMORY.md +++ b/.claude/agent-memory/game-dev/MEMORY.md @@ -1 +1,2 @@ - [Level Builder Tool](level-builder-tool.md) — 白模关卡自动生成 Python 脚本(tools/level-builder/,265 Actor 解析验证通过) +- [UE5.7 Python API](ue57-python-api.md) — 实测 API 差异(set_actor_rotation、new_level、CWD、import 路径) diff --git a/.claude/agent-memory/game-dev/ue57-python-api.md b/.claude/agent-memory/game-dev/ue57-python-api.md new file mode 100644 index 0000000..45670de --- /dev/null +++ b/.claude/agent-memory/game-dev/ue57-python-api.md @@ -0,0 +1,58 @@ +--- +name: ue57-python-api +description: UE5.7 Python API 实测差异记录——set_actor_rotation、new_level、CWD 问题 +metadata: + type: project +--- + +# UE5.7 Python API 实测差异 + +## 2026-06-07 实测(UE 5.7, PythonScriptPlugin) + +### `set_actor_rotation()` 需要 `teleport_physics` 参数 +```python +# UE5.6 文档写法(会报错): +actor.set_actor_rotation(unreal.Rotator(pitch, yaw, roll)) + +# UE5.7 正确写法: +actor.set_actor_rotation(unreal.Rotator(pitch, yaw, roll), False) +``` +**Why:** UE5.7 改了 API 签名,positional argument `teleport_physics` 变为必需 +**How to apply:** 所有 `set_actor_rotation()` 调用都加第二个参数 `False` + +### `-ExecutePythonScript` 模式下 CWD 不是项目目录 +```python +# ❌ 错误:CWD 是引擎 Binaries 目录 +PROJECT_ROOT = Path(os.getcwd()) +# → E:\...\UE_5.7\Engine\Binaries\Win64 + +# ✅ 正确:通过环境变量传入 +PROJECT_ROOT = Path(os.environ.get("LB_PROJECT_ROOT", "")) +``` +**Why:** UE5 引擎启动时将 CWD 设为引擎二进制目录 +**How to apply:** 由 bat 脚本设置 `LB_PROJECT_ROOT` 环境变量,Python 脚本从中读取 + +### `new_level()` 需要 `asset_path` 参数 +```python +# ❌ 错误: +unreal.EditorLevelLibrary.new_level() + +# ✅ 正确: +unreal.EditorLevelLibrary.new_level("/Game/Maps/LVL_SuburbanV01") +``` + +### `AssetToolsSubsystem` 在 UE5.7 Python 中不可用 +`unreal.get_editor_subsystem(unreal.AssetToolsSubsystem)` 报 `no attribute 'AssetToolsSubsystem'` +改用 `unreal.EditorLevelLibrary.new_level(asset_path)` 创建关卡 + +### 目录名含连字符导致 Python import 失败 +``` +tools/level-builder/ ← 连字符 +from tools.level_builder.config... ← 下划线,Python import 不支持连字符 +``` +修复:将 level-builder 根目录加入 sys.path,使用 `from config.asset_mapping import ...` 代替完整路径 + +## 相关文件 +- `tools/level-builder/builder/scene_builder.py` +- `tools/level-builder/build_cmdline.py` +- `tools/level-builder/build_level.bat` diff --git a/tools/level-builder/output/搭建报告-auto.md b/tools/level-builder/output/搭建报告-auto.md index 805bb89..6db99e1 100644 --- a/tools/level-builder/output/搭建报告-auto.md +++ b/tools/level-builder/output/搭建报告-auto.md @@ -1,6 +1,6 @@ # 白模搭建报告 — 自动生成 -> 生成时间: 2026-06-07 23:03 +> 生成时间: 2026-06-07 23:11 > 数据来源: 关卡-v01-搭建指南.md > 场景尺寸: 8000cm × 6000cm