Unity编辑器扩展入门——自定义编辑器窗口
Lesson2 - 自定义编辑器窗口
EditorWindow 基础
继承 EditorWindow 类并重写 OnGUI 方法可以创建自定义编辑器窗口。这是实现编辑器拓展的基础。
创建并显示窗口
1 | using UnityEditor; |
GetWindow 常用参数
创建窗口时可以使用不同的 GetWindow 重载方法:
GetWindow<T>():获取或创建窗口GetWindow<T>("标题"):指定窗口标题GetWindow<T>(utility: true):创建浮动窗口(可自由移动改变大小)GetWindowWithRect<T>(Rect):创建指定位置和大小的窗口
生命周期函数
OnEnable 和 OnDisable
1 | private void OnEnable() { |
OnGUI
每帧调用,用于绘制窗口 UI。这是最重要的方法。
OnDestroy
窗口销毁时调用,执行最终清理工作。
事件回调函数
内容变化事件
OnHierarchyChange():Hierarchy 窗口发生变化时调用,如游戏对象创建、删除、重命名。
OnProjectChange():Project 资源发生变化时调用。
OnInspectorUpdate():Inspector 面板更新时调用,可用于实时更新窗口显示。
焦点事件
OnFocus():窗口获得焦点时调用。
OnLostFocus():窗口失去焦点时调用,可用于保存数据。
选择事件
OnSelectionChange():选中对象发生变化时调用,可以在这里更新窗口显示的内容。
1 | private void OnSelectionChange() { |
常用成员
静态属性
focusedWindow:当前获得键盘焦点的窗口mouseOverWindow:鼠标所在的窗口
成员属性
titleContent:窗口标题和图标position:窗口位置和大小的 RectwantsMouseEnterLeaveWindow:设为 true 可监听鼠标进出事件
成员方法
Show():显示窗口Close():关闭窗口Repaint():立即重绘窗口Focus():获得焦点
窗口类型
普通窗口
1 | MyWindow win = EditorWindow.GetWindow<MyWindow>("标题"); |
浮动窗口(Utility)
1 | MyWindow win = EditorWindow.GetWindow<MyWindow>("标题", utility: true); |
浮动窗口可以自由拖动和改变大小,不会与其他窗口停靠。
多实例窗口
1 | MyWindow win = EditorWindow.CreateWindow<MyWindow>("标题"); |
CreateWindow 允许创建多个相同类型的窗口实例。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 游戏开发笔记!
评论
