赞
踩
当想为 Unity 拓展一个自定义窗口时,只需实现继承 EditorWindow 的类即可,并在该类的 OnGUI 函数中编写面板控件相关的逻辑。
调用 EditorWindow.GetWindow()
添加自定义页签,用于开启窗口。创建窗口对象后,调用对象的 Show()
方法即可显示窗口。
该方法有多种重载,主要参数一般有:
public class Lesson2 : EditorWindow
{
[MenuItem("Unity编辑器拓展/Lesson2/显示自定义面板")]
private static void ShowWindow() {
Lesson2 win = EditorWindow.GetWindow<Lesson2>("我的窗口");
win.Show();
}
}
继承 EditorWindow 的窗口类自带一些事件回调函数,当触发对应事件时会自动进入。
OnHierarchyChange():当场景中的层次结构(Hierarchy)发生变化时调用。
例如,当游戏对象被创建、删除或重命名时触发。
OnFocus():当窗口获得焦点时调用。
在该方法中可以执行在窗口获得焦点时需要进行的操作。
OnLostFocus():当窗口失去焦点时调用。
通常在该方法中执行在窗口失去焦点时需要进行的清理工作。
OnProjectChange():当项目资源发生变化时调用。
例如,当添加、删除或修改项目中的文件时触发。
OnInspectorUpdate():在检视器(Inspector)面板更新时调用。
可以在这个方法中执行需要在检视器面板刷新时进行的逻辑,比如更新显示的信息。
OnSelectionChange():当选择的对象发生变化时调用。
在该方法中可以执行与所选对象相关的操作,以确保编辑器窗口的内容与当前选择保持同步。
OnEnable():
当窗口被激活时调用,通常在窗口创建时会调用一次。
在该方法中可以进行初始化工作,例如注册事件监听器或设置初始变量。
OnGUI():
每帧都会调用此方法,用于绘制编辑器窗口的 GUI。
在该方法中可以使用 GUILayout 或 EditorGUILayout 等类创建界面元素,以便用户与窗口进行交互。
OnDestroy():
当窗口被销毁时调用,通常在关闭编辑器或切换场景时触发。在这里进行最终的清理工作,确保没有未释放的资源。
Update():
在编辑器窗口每帧更新时调用。通常在这里执行需要在每帧进行的逻辑。
Unity 官方文档有关于编辑器窗口类的 API 说明:https://docs.unity.cn/cn/2022.3/ScriptReference/EditorWindow.html。
静态变量
静态函数
成员变量
成员函数
想要实现自定义窗口,只需继承 EditorWindow 类,主要工作是在 OnGUI 中利用 GUI 相关 API 绘制控件处理功能逻辑。
使用对应的事件回调函数帮助监听一些特殊情况,用于处理对应逻辑。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。