99 lines
2.9 KiB
Markdown
99 lines
2.9 KiB
Markdown
# EditorExtension Toolbar 扩展框架手册
|
|
|
|
## 模块概述
|
|
`Toolbar` 模块用于向 Unity 主工具栏动态注入自定义 `VisualElement` / `IMGUIContainer`,支持自动发现、排序、对齐、推荐样式、分组与用户覆盖配置。
|
|
|
|
## 适用场景
|
|
- 给 Unity 顶部工具栏挂项目级入口。
|
|
- 统一管理开发、调试、资源、场景、构建工具。
|
|
- 让工具栏元素支持分组、显隐与个性化排序。
|
|
|
|
## 快速上手
|
|
```csharp
|
|
using Paps.UnityToolbarExtenderUIToolkit;
|
|
using UnityEngine.UIElements;
|
|
|
|
[MainToolbarElement("DemoToolbar", ToolbarAlign.Right, 100)]
|
|
public class DemoToolbarElement : IMGUIContainer
|
|
{
|
|
public void InitializeElement()
|
|
{
|
|
onGUIHandler = () => UnityEngine.GUILayout.Label("Demo");
|
|
}
|
|
}
|
|
```
|
|
|
|
## 工作机制
|
|
1. `MainToolbar` 定位 Unity 原生 Toolbar 容器。
|
|
2. `MainToolbarAutomaticExtender` 负责刷新与注入。
|
|
3. 特性仓储扫描带 `MainToolbarElementAttribute` 的类型。
|
|
4. 元素实例化后包装为 `MainToolbarElement`。
|
|
5. 控制面板和覆盖配置负责用户态管理。
|
|
|
|
## 可调用 API
|
|
### 类型:`MainToolbarElementAttribute`
|
|
源码:`Packages/com.alicizax.unity.editor.extension/Editor/Toolbar/MainToolbarElementAttribute.cs`
|
|
|
|
- `MainToolbarElementAttribute(string id, ToolbarAlign alignment = ToolbarAlign.Left, int order = 0, bool useRecommendedStyles = true)`
|
|
- `Id`
|
|
- `Alignment`
|
|
- `Order`
|
|
- `UseRecommendedStyles`
|
|
|
|
### 类型:`MainToolbarElement`
|
|
源码:`Packages/com.alicizax.unity.editor.extension/Editor/Toolbar/MainToolbarElement.cs`
|
|
|
|
- `Id`
|
|
- `VisualElement`
|
|
- `Alignment`
|
|
- `Order`
|
|
- `UseRecommendedStyles`
|
|
- 构造函数 `MainToolbarElement(...)`
|
|
|
|
### 类型:`MainToolbar`
|
|
源码:`Packages/com.alicizax.unity.editor.extension/Editor/Toolbar/MainToolbar.cs`
|
|
|
|
- `OnInitialized`
|
|
- `OnRefresh`
|
|
- `UnityToolbarRoot`
|
|
- `LeftContainer`
|
|
- `CenterContainer`
|
|
- `RightContainer`
|
|
- `PlayModeButtonsContainer`
|
|
- `IsAvailable`
|
|
|
|
### 类型:`MainToolbarAutomaticExtender`
|
|
源码:`Packages/com.alicizax.unity.editor.extension/Editor/Toolbar/MainToolbarAutomaticExtender.cs`
|
|
|
|
- `OnRefresh`
|
|
- `OnAddedCustomContainersToToolbar`
|
|
|
|
### 类型:`MainToolbarControlPanelWindow`
|
|
源码:`Packages/com.alicizax.unity.editor.extension/Editor/Toolbar/ControlPanelWindow/MainToolbarControlPanelWindow.cs`
|
|
|
|
- `OpenWindow()`
|
|
|
|
### 类型:`MainToolbarElementController`
|
|
- `Id`
|
|
- `ControlledVisualElement`
|
|
- `HoldsAGroup`
|
|
- `HoldsANativeElement`
|
|
|
|
### 其他重要公开类型
|
|
- `ToolbarAlign`
|
|
- `GroupDefinition`
|
|
- `GroupElement`
|
|
- `ScriptableGroupDefinition`
|
|
- `MainToolbarElementDropdownAttribute`
|
|
- `MainToolbarElementOverride`
|
|
- `RecommendedStyle` 及派生类
|
|
- `Variable` / `SerializableVariable` 等变量序列化类型
|
|
|
|
## 打开控制面板
|
|
- 菜单:`Tools/Extension/Toolbar/Main Toolbar Control Panel`
|
|
- 代码:`MainToolbarControlPanelWindow.OpenWindow();`
|
|
|
|
## 注意事项
|
|
- `Id` 应稳定且全局唯一。
|
|
- 自定义元素建议在 `InitializeElement()` 中做依赖判空。
|