# PropertyGrid **命名空间**: `XCEngine::Editor::UI` **类型**: `header-helper` **源文件**: `editor/src/UI/PropertyGrid.h` **描述**: 在 Inspector 中提供统一的属性行控件,并集成交互式撤销辅助。 ## 概述 `PropertyGrid.h` 是当前 Inspector 属性编辑体验的中枢之一。 它在 [`ScalarControls`](../ScalarControls/ScalarControls.md) 和 [`VectorControls`](../VectorControls/VectorControls.md) 之上封装了一组更贴近 Inspector 语义的 API: - `DrawPropertyFloat` - `DrawPropertyBool` - `DrawPropertyColor4` - `DrawPropertyCombo` - `DrawPropertyVec3Input` - `ApplyPropertyChange` ## 当前实现 - 统一使用 `InspectorPropertyLabelWidth()` 作为标签列宽 - `ApplyPropertyChange` 在字段变化时可选地调用 `undoManager->BeginInteractiveChange()` - 具体组件编辑器通常会先调用 `DrawProperty*`,再把结果交给 `ApplyPropertyChange` ## 设计说明 商业编辑器里的 Inspector 很少直接暴露底层控件 API,而是会先收口成属性网格层。 这样做的好处是: - 全部组件 editor 的标签宽度、排版和交互节奏统一 - 撤销系统可以自然嵌入属性修改路径 - 组件编辑器代码更接近“编辑语义”,而不是原始 ImGui 调用 ## 当前限制 - 目前仍然是手写属性 helper,不是基于反射的通用属性系统 - `ApplyPropertyChange` 只负责开始交互式改动,最终收尾仍要靠 Inspector 路由层 - 主要面向 Inspector,不是通用任意表单框架 ## 相关文档 - [UI](../UI.md) - [ScalarControls](../ScalarControls/ScalarControls.md) - [VectorControls](../VectorControls/VectorControls.md) - [TransformComponentEditor](../../ComponentEditors/TransformComponentEditor/TransformComponentEditor.md)