Unity编辑器拓展(一) Custom Editor Window

文档 Editor Windows
Unity编辑器拓展(一)
Unity编辑器拓展(二)
Unity编辑器拓展(三)

自定义编辑器窗口 Custom Editor Window

Unity除了自带的Project窗口,Scene窗口等,还支持自定义窗口。创建自定义窗口的步骤一般为:

  • 创建一个从 EditorWindow 派生的脚本

  • 使用代码触发窗口显示自身

  • 为您的工具实现GUI代码

实例:

public class MyWindow : EditorWindow {

    string myString = "Hello World";
    bool groupEnabled;
    bool myBool = true;
    float myFloat = 1.23f;

    // 创建菜单“Window”下子菜单“My Window”
    [MenuItem("Window/My Window")]
    public static void ShowWindow() {

        // 创建一个MyWindow的可停靠窗口
        EditorWindow.GetWindow(typeof(MyWindow));
        // 创建一个标题为“My Empty Window”的工具窗口MyWindow
        // // unility: 是否为工具窗口(不可停靠)
        // EditorWindow.GetWindow(typeof(MyWindow), false, "My Empty Window");
        // // 创建一个Rect(0, 0, 100, 150)的窗口
        //EditorWindow.GetWindowWithRect(typeof(MyWindow), new Rect(0, 0, 100, 150));
    }

    private void OnGUI() {
        Debug.Log("OnGUI()");

        // 创建Base Settings
        GUILayout.Label("Base Settings", EditorStyles.boldLabel);     // 创建一个粗体 Label
        myString = EditorGUILayout.TextField("Text Field", myString); // 为myString创建TextField

        // 创建Optional Settings
        groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Settings", groupEnabled);
        myBool = EditorGUILayout.Toggle("Toggle", myBool);          // 为myBool创建Toggle
        myFloat = EditorGUILayout.Slider("Slider", myFloat, -3, 3); // 为myFloat创建Slider(取值范围-3~3)
        EditorGUILayout.EndToggleGroup(); // 一个ToggleGroup必须包含Begin-End
    }
}

运行效果如图:


Unity编辑器拓展(一) Custom Editor Window_第1张图片

消息事件

  • Awake:当新窗体被打开时回调
  • OnDestroy:当关闭窗体时被回调
  • OnFocus:当窗体获取到焦点时回调
  • OnLostFocus:当窗体失去焦点时回调
  • OnGUI:绘制时回调,用来实现我们自定义的 GUI
  • OnHierarchyChange:当编辑器的 Hierarchy 有变化时回调
  • OnProjectChange: 当编辑器的 Project 有变化时回调
  • OnSelectionChange:当编辑器中选中的对象有变换时回调
  • OnInspectorUpdate:每秒调用10帧,为了给Inspector更新变化
  • Update:在可显示的情况下每秒调用许多次

点击触发打开MyWindow时:Awake -> OnEnable -> OnFocus -> 多个 OnGUI

点击关闭MyWindow时:多个 OnGUI -> OnLostFocus -> OnDisable -> OnDestroy

你可能感兴趣的:(Unity编辑器拓展(一) Custom Editor Window)