2.8 KiB
2.8 KiB
Editor模块 项目根路径仍绑定可执行目录阻塞真实场景与资源加载
1. 问题定义
当前 editor 初始化 EditorContext 时,把 project path 直接设成了可执行文件目录:
具体行为是:
- 通过
GetExecutableDirectoryUtf8()拿 exe 目录 - 用这个目录初始化
EditorContext ProjectPanel和SceneManager::LoadStartupScene()都基于这个路径工作
这意味着 editor 当前没有“真实工程根目录”的概念。
2. 当前影响
基于当前实现:
ProjectManager::Initialize()会把<projectPath>/Assets当作项目资源根editor/src/Managers/ProjectManager.cppeditor/src/Core/EditorWorkspace.h
但 projectPath 现在是 editor/bin/...
结果就是:
- Project 面板看到的是 exe 目录下的
Assets - Startup Scene 也是从 exe 目录下找
Assets/Scenes/Main.xc - viewport 后面如果要加载真实 scene / material / texture / mesh,也会默认走错根目录
对“真正接引擎工程内容”来说,这是实打实的阻塞项。
3. 为什么这是重大缺陷
Scene/Game Viewport 一旦接 Renderer,就不再只是“显示一个空测试图”。
它需要基于当前工程:
- 加载场景
- 找到 mesh / material / texture / shader 资产
- 正确解析
Assets/...相对路径
如果 editor 的项目根仍然绑定在 exe 目录:
- 资源加载结果会和实际工程目录脱钩
- Editor 和运行时看到的资产树不是同一棵
- 后续 Project 面板、Scene 保存、Viewport 渲染都会形成伪项目环境
4. 建议方案
建议尽快引入明确的工程根路径入口,而不是继续默认 exe 目录:
Application启动时明确解析 editor project root- 最少先支持:
- 命令行传入工程根
- 或固定读取 workspace/project 配置
EditorContext / ProjectManager / SceneManager统一只认这一份 project rootProjectPanel、startup scene、future viewport asset loading 全部复用同一来源
在没有真实 project root 之前,不建议开始做 viewport 里的正式资源接入。
5. 验收标准
完成后至少应满足:
- editor 能明确知道当前工程根目录,而不是推断 exe 目录
- Project 面板显示的是工程真实
Assets - Startup Scene 从真实工程根加载
- Scene/Game Viewport 后续使用的资源路径与 Project 面板一致
- Debug / Release / editor/bin 变化不会改变 editor 看到的项目内容
6. 优先级
高。
这条不解决,Viewport 接入后只会跑在一个“伪项目目录”里,后面越做越难回收。