编辑器窗口¶
OdinEditorWindow¶
- 不要重写
OnGUI;注入 GUI 请重写DrawEditors或用[OnInspectorGUI]特性。 - 必须重写
OnGUI时务必base.OnGUI(),否则只剩普通 EditorWindow。 - Odin 默认开启 ScrollView。
绘制优先级顺序¶
OnBeginDrawEditors/DrawEditors/OnEndDrawEditors都必须写base.,否则不按序或覆盖。
OdinMenuItem¶
可自定义单个菜单项(含默认打开宽度);示例见 Assets/Plugins/Sirenix/Demos/Editor Windows/Scripts/Editor/OdinMenuStyleExample.cs。
内置工具类一览¶
| 类 | 作用 |
|---|---|
SirenixEditorGUI |
绘制编辑器 GUI(对标 EditorGUI/GUILayout) |
SirenixEditorFields |
字段绘制(对标 EditorGUI) |
SirenixGUIStyles |
封装样式(对标 GUIStyle) |
GUIHelper / GUIContext |
GUI 工具集 |
ObjectPicker |
Object 选择器 |
DragAndDropUtility |
拖拽辅助 |
PathUtilities |
路径工具(对标 EditorUtility) |
OdinEditorResources |
取 Odin Logo |
常用 API¶
GUIHelper.RequestRepaint(); // 请求重绘(实时刷新)
InspectorConfig.Instance; // 强制重绘配置
serializedObject.ApplyModifiedProperties(); // 面板修改后保存
SirenixGUIStyles¶
GUILayout.Label(label, SirenixGUIStyles.Label, GUILayoutOptions.Height(22f));
GUILayout.Label(text, SirenixGUIStyles.HighlightedLabel, GUILayoutOptions.Height(22f));
SirenixEditorGUI.DrawRoundRect(rect, SirenixGUIStyles.GreenValidColor, radius);
GUILayoutOptions.Height(22f).MinWidth(14).MaxWidth(22f); // 链式调用
原则:尽量用 Odin 特性而非 Unity 特性;Odin 绘制中优先用 Odin 封装功能。