9.1 KiB
MetaCore Project 面板与资源浏览设计
生成时间:2026-03-28
状态:草案
范围:M2 资源与模型导入循环、M3 场景编辑工作流
目的
这份文档用于明确 MetaCore 第一阶段 Project 面板与资源浏览工作流应该怎么设计。
目标不是做一个“能列文件名”的面板,而是做出一套真正支撑内容生产的资源工作流。
它要解决的问题包括:
- 项目里的资源怎样被看见
- 资源怎样被定位、筛选、预览
- 资源怎样被拖入场景
- 资源怎样重新导入、刷新、定位引用
- 源文件、元数据、生成资源之间如何组织
结论先说
MetaCore 第一阶段的 Project 面板应该明确承担下面这条工作流:
导入资源
-> 资源进入 Asset Database
-> Project 面板可见
-> 选择资源查看信息
-> 拖入 Scene / Hierarchy 使用
-> 需要时重导入、刷新、定位
也就是说,Project 面板不是“附属视图”,而是引擎生产力主链的一部分。
如果没有这部分,导入能力就只是“文件进来了”,而不是“资源进入了引擎工作流”。
当前代码基础
从当前代码看,已经具备下面这些基础:
MetaCoreProjectDescriptorMetaCoreAssetRecordMetaCoreIAssetDatabaseServiceMetaCoreIImportPipelineServiceMetaCoreICookServiceMetaCoreIAssetRegistryService
这说明 MetaCore 已经有了资源数据库和导入服务的基本边界。
当前更缺的是:
- 明确
Project面板展示什么 - 明确源文件、资源、元数据三者关系
- 明确资源交互动作
- 明确资源拖拽进场景的规则
- 明确“导入结果”与“项目文件结构”之间的用户心智
设计目标
第一阶段 Project 面板与资源浏览工作流要满足:
- 用户能看懂项目资源结构
- 用户能区分源文件和正式资源
- 用户能找到模型、材质、纹理、场景、Prefab
- 用户能拖拽资源进入场景
- 用户能重新导入和刷新资源
- 用户能看到最基本的资源元信息
- 用户能理解资源来自哪里、被什么引用
核心概念
1. 项目目录
项目目录是用户能直接看到和理解的结构,例如:
AssetsScenesRuntimeLibrary
2. 源文件
例如:
.glb.gltf.fbx- 图片源文件
这是用户导入进来的输入文件。
3. 元数据
例如 .mcmeta 一类文件,主要用于保存:
- AssetGuid
- AssetType
- ImporterId
- SourceHash
- PackagePath
4. 正式资源
这是引擎真正管理和消费的对象,例如:
- Mesh Asset
- Material Asset
- Texture Asset
- Prefab Asset
5. 导入结果
一个源文件导入后,通常不是只得到一个资源,而是一组资源及其关系。
Project 面板必须允许用户理解这层关系。
第一阶段推荐的信息组织
用户看到的主目录
第一阶段建议在 Project 面板中,首先按项目目录浏览:
AssetsScenesRuntime
Library 原则上不应作为用户的主工作目录。
用户看到的资源层级
在 Assets 下,第一阶段建议重点支持:
- 模型源文件
- 材质资源
- 纹理资源
- Prefab
- 其他后续资产
第一阶段推荐的展示心智
不要让用户只看到一堆 package 文件。
推荐心智应是:
- 左侧按项目目录浏览
- 中间按当前目录显示“资源项”
- 右侧或下方 Inspector 显示当前资源详情
这更接近 Unity / UE 用户习惯。
Project 面板必须支持的能力
P0:浏览
- 浏览目录
- 浏览目录下资源
- 显示资源名称
- 显示资源类型
- 显示图标或最小类型标识
P0:选择
- 单选资源
- 与 Inspector 联动
- 双击打开适用资源
例如:
- 双击场景资源 -> 打开 Scene
- 双击 Prefab -> 定位或打开 Prefab 编辑流
P0:拖拽
- 将模型资源拖入 Scene View
- 将模型资源拖入 Hierarchy
- 将材质资源拖到对象材质槽
- 将 Prefab 拖入场景
拖拽是资源工作流的核心生产力,第一阶段优先级很高。
P0:刷新与重导入
- 刷新当前目录
- 刷新 Asset Database
- 对单个资源执行重导入
P0:定位
- 按路径定位
- 按 GUID 查到资源记录
- 在 Project 面板中高亮当前资源
第一阶段推荐的展示字段
对于 Project 面板中的每个资源项,第一阶段至少应显示:
- 名称
- 资源类型
- 来源类型
- 源文件
- 元数据
- 正式资源
- 导入器类型(可选)
不建议第一阶段直接把一大堆底层字段都堆到列表中。
资源详情 Inspector
当用户在 Project 面板里选中一个资源时,Inspector 第一阶段至少应显示:
- 名称
- 资源 GUID
- 资源类型
- 相对路径
- 源文件路径
- ImporterId
- SourceHash
- PackagePath
针对模型资源
建议额外显示:
- 包含几个 Mesh
- 包含几个 Material
- 包含几个 Texture
- 节点层级摘要
针对材质资源
建议额外显示:
- ShaderModel
- BaseColor
- 贴图引用
针对场景资源
建议额外显示:
- 是否是 Startup Scene
源文件、元数据、正式资源的关系
第一阶段必须在设计上讲清楚,不然用户会迷惑。
推荐规则
- 源文件是输入
- 元数据是追踪和导入控制文件
- 正式资源是引擎消费对象
Project 面板对这三者的展示建议
第一阶段建议用户主视角以“资源”为中心,而不是以 package 为中心。
也就是说:
- 用户看到的是“模型资源”、“材质资源”、“纹理资源”
- 需要时可以在 Inspector 中看到它们来自哪个源文件
不建议把 package 内部细节直接变成主界面心智。
模型导入后的展示方式
这是第一阶段最关键的工作流之一。
当用户导入一个 .glb 文件后,建议在 Project 面板中:
- 显示一个模型入口项
- 允许展开或在 Inspector 中查看导入出的:
- Mesh 资源
- Material 资源
- Texture 资源
不建议的做法
不要让用户导入一个模型后,只看到:
- 一个源文件
- 一堆看不懂的 package 文件
这会让资源工作流非常不透明。
拖拽规则
模型资源拖入 Scene
结果应为:
- 根据模型节点文档实例化对象树
Mesh 资源拖入 Scene
结果应为:
- 创建一个带
MeshRenderer的对象 - 默认绑定该
Mesh Asset - 如果可推断默认材质,则一起指派
材质资源拖到对象
结果应为:
- 替换当前对象或当前材质槽的材质引用
Prefab 拖入 Scene
结果应为:
- 实例化 Prefab
右键菜单建议
第一阶段推荐支持最小右键动作:
- 新建文件夹
- 刷新
- 重导入
- 显示到资源所在目录
- 复制相对路径
针对适用资源可增加
- 设置为启动场景
- 创建 Prefab
- 在场景中实例化
搜索与筛选
第一阶段建议至少支持:
- 按名称搜索
- 按资源类型筛选
例如:
- Scene
- Material
- Mesh
- Texture
- Prefab
这会显著提高后续工业场景项目的生产力。
与场景工作流的关系
Project 面板不是独立存在的,它必须和:
HierarchyScene ViewInspector
形成联动。
推荐联动
- 在
Project里选资源 -> Inspector 显示资源详情 - 从
Project拖资源到Scene-> 生成对象或修改对象 - 场景对象引用资源 -> Inspector 可反向定位到
Project
这条联动链一旦成立,引擎工作流才像 Unity/UE。
与导入器的关系
Project 面板必须对导入器结果可见。
也就是说:
- 导入成功后,Asset Database 更新
Project面板刷新后能立即看到结果- 重导入后,资源视图与 Inspector 同步变化
不能让导入器是一条孤立后台流程。
与 Cook / 打包的关系
第一阶段不要求 Project 面板直接承担完整打包流程,但至少应能:
- 显示资产是否有 package 路径
- 在必要时查看 cooked 输出位置
后续再扩:
- 查看依赖
- 查看 cook 状态
- 查看增量构建状态
第一阶段推荐实现顺序
建议按下面顺序推进:
- 固定
Project面板目录浏览模型 - 固定资源列表项和资源详情显示
- 打通
Asset Database -> Project 面板刷新链 - 打通模型资源拖入 Scene / Hierarchy
- 打通材质拖拽到对象槽位
- 打通单资源重导入
- 再补搜索、右键菜单和更强预览
第一阶段 Definition of Done
下面这些成立时,才能认为第一阶段 Project 面板真正可用:
- 用户能清楚看到项目资源结构
- 导入后的资源能在
Project面板中找到 - 选中资源时能看到基本元信息
- 模型资源可以拖入场景
- 材质资源可以拖到对象材质槽
- 能对资源执行刷新和重导入
- Scene / Inspector / Project 三者之间联动成立
最终建议
第一阶段不要把 Project 面板做成“文件列表”,而要把它做成:
MetaCore 的资源工作台。
只有这样,模型导入、材质系统、场景编辑和后续 Prefab、UI、打包等能力,才会真正串成一个像 Unity/UE 的引擎工作流。