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

2018-09-19  本文已影响134人  麓山法海

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

自定义编辑器窗口 Custom Editor Window

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

实例:

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
    }
}

运行效果如图:


消息事件

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

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

上一篇 下一篇

猜你喜欢

热点阅读