44 lines
1.2 KiB
Markdown
44 lines
1.2 KiB
Markdown
|
|
# Panel
|
||
|
|
|
||
|
|
**命名空间**: `XCEngine::Editor`
|
||
|
|
|
||
|
|
**类型**: `class (abstract base)`
|
||
|
|
|
||
|
|
**源文件**: `editor/src/panels/Panel.h`
|
||
|
|
|
||
|
|
**描述**: 所有编辑器面板的抽象基类,定义 attach/detach/update/event/render 生命周期与上下文注入能力。
|
||
|
|
|
||
|
|
## 概述
|
||
|
|
|
||
|
|
`Panel` 当前是所有具体面板的共同基类。
|
||
|
|
|
||
|
|
它提供:
|
||
|
|
|
||
|
|
- 名称
|
||
|
|
- 开关状态
|
||
|
|
- `IEditorContext*`
|
||
|
|
- 一组可覆写生命周期钩子
|
||
|
|
|
||
|
|
## 关键接口
|
||
|
|
|
||
|
|
| 方法 | 作用 |
|
||
|
|
|------|------|
|
||
|
|
| `OnAttach()` / `OnDetach()` | 面板挂接与拆除。 |
|
||
|
|
| `OnUpdate(float)` | 每帧更新。 |
|
||
|
|
| `OnEvent(void*)` | 处理外部事件。 |
|
||
|
|
| `Render()` | 渲染面板 UI。 |
|
||
|
|
| `GetName()` | 获取面板名。 |
|
||
|
|
| `IsOpen()` / `SetOpen()` / `Toggle()` | 控制开关状态。 |
|
||
|
|
| `SetContext()` / `GetContext()` / `HasContext()` | 管理编辑器上下文。 |
|
||
|
|
|
||
|
|
## 当前实现边界
|
||
|
|
|
||
|
|
- `SetContext()` 当前带断言,不允许重复设置上下文。
|
||
|
|
- 事件参数是 `void*`,说明当前事件分发层还比较宽松,没有统一强类型 UI 事件基类。
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [panels](../panels.md)
|
||
|
|
- [PanelCollection](../PanelCollection/PanelCollection.md)
|
||
|
|
- [IEditorContext](../../Core/IEditorContext/IEditorContext.md)
|