Files
XCEngine/docs/api/XCEngine/Editor/panels/Panel/Panel.md

44 lines
1.2 KiB
Markdown
Raw Normal View History

2026-03-27 14:40:29 +08:00
# 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)