docs: update API docs for rendering and script editors

This commit is contained in:
2026-04-02 21:29:08 +08:00
parent f7d7d08d99
commit 00ce503762
33 changed files with 1519 additions and 262 deletions

View File

@@ -4,30 +4,47 @@
**类型**: `submodule`
**描述**: 组件属性编辑器层,负责把运行时组件映射到 Inspector 中的具体编辑 UI。
**描述**: Inspector 组件编辑器层,负责把运行时组件映射成可撤销、可交互的专用编辑 UI。
## 概述
当前目录包含
当前组件编辑器系统走的是典型的“按组件类型注册专用 editor”路线
- [IComponentEditor](IComponentEditor/IComponentEditor.md) 定义统一契约
- [ComponentEditorRegistry](ComponentEditorRegistry/ComponentEditorRegistry.md) 负责注册、拥有和查找 editor
- 各个具体 editor 只处理自己的组件 UI 与交互规则
这比把所有组件字段塞进一个通用 Inspector 渲染器更容易扩展,也更方便为特殊组件接入脚本元数据、引用选择器和撤销逻辑。
## 当前已记录的 editor
- [IComponentEditor](IComponentEditor/IComponentEditor.md)
- [ComponentEditorRegistry](ComponentEditorRegistry/ComponentEditorRegistry.md)
- [TransformComponentEditor](TransformComponentEditor/TransformComponentEditor.md)
- [CameraComponentEditor](CameraComponentEditor/CameraComponentEditor.md)
- [LightComponentEditor](LightComponentEditor/LightComponentEditor.md)
- [ScriptComponentEditor](ScriptComponentEditor/ScriptComponentEditor.md)
这说明 Inspector 当前走的是“按组件类型注册专用 editor”的路线。这和商业编辑器里常见的 custom inspector / property drawer 思路是一致的。
## 当前注册但尚未单独补页的 editor
当前这组 editor 也已经体现出比较明确的分层
`ComponentEditorRegistry.cpp` 当前实现registry 还会注册
- `IComponentEditor` 定义统一契约
- `ComponentEditorRegistry` 负责注册和查找
- 具体 editor 只处理本组件的 Inspector 体验
- `MeshFilterComponentEditor`
- `MeshRendererComponentEditor`
这比把所有组件字段硬塞进一个大而全的 Inspector 渲染器更容易扩展。
## ScriptComponentEditor 在这层里的位置
[ScriptComponentEditor](ScriptComponentEditor/ScriptComponentEditor.md) 是这套系统里最依赖运行时元数据的一个 editor。它不是直接读取 `ScriptComponent` 自身的字段列表,而是通过 `ScriptEngine::TryGetScriptFieldModel()` 获取:
- 当前脚本类是否已分配 / 可用 / 缺失
- 字段元数据
- 默认值、stored override 和 live managed value 的合成结果
- stored-only / type mismatch 一类问题状态
因此它也是 `ComponentEditors` 子模块和 `Scripting` 子模块的主要交汇点。
## 相关文档
- [Editor 模块](../Editor.md)
- [panels](../panels/panels.md)
- [ComponentEditorRegistry](ComponentEditorRegistry/ComponentEditorRegistry.md)
- [ScriptComponentEditor](ScriptComponentEditor/ScriptComponentEditor.md)
- [ScriptComponentEditorUtils](ScriptComponentEditorUtils/ScriptComponentEditorUtils.md)
- [InspectorPanel](../panels/InspectorPanel/InspectorPanel.md)
- [Components](../../Components/Components.md)