Files
XCEngine/docs/used/Editor模块_项目根路径仍绑定可执行目录阻塞真实场景与资源加载3.28.md

2.8 KiB
Raw Blame History

Editor模块 项目根路径仍绑定可执行目录阻塞真实场景与资源加载

1. 问题定义

当前 editor 初始化 EditorContext 时,把 project path 直接设成了可执行文件目录:

具体行为是:

  • 通过 GetExecutableDirectoryUtf8() 拿 exe 目录
  • 用这个目录初始化 EditorContext
  • ProjectPanelSceneManager::LoadStartupScene() 都基于这个路径工作

这意味着 editor 当前没有“真实工程根目录”的概念。


2. 当前影响

基于当前实现:

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 目录:

  1. Application 启动时明确解析 editor project root
  2. 最少先支持:
    • 命令行传入工程根
    • 或固定读取 workspace/project 配置
  3. EditorContext / ProjectManager / SceneManager 统一只认这一份 project root
  4. ProjectPanel、startup scene、future viewport asset loading 全部复用同一来源

在没有真实 project root 之前,不建议开始做 viewport 里的正式资源接入。


5. 验收标准

完成后至少应满足:

  1. editor 能明确知道当前工程根目录,而不是推断 exe 目录
  2. Project 面板显示的是工程真实 Assets
  3. Startup Scene 从真实工程根加载
  4. Scene/Game Viewport 后续使用的资源路径与 Project 面板一致
  5. Debug / Release / editor/bin 变化不会改变 editor 看到的项目内容

6. 优先级

高。

这条不解决Viewport 接入后只会跑在一个“伪项目目录”里,后面越做越难回收。