Unity3D编辑器扩展——子窗体显示(GUILayout.Widnow)

Unity3D编辑器扩展——子窗体显示(GUILayout.Widnow)

1.使用场景

(1)在Unity中创建一个节点编辑器时,需要在主窗体中创建一个小窗体,方便操作

2.具体代码

在官网的API解释中只能搜到Monobehavior上的用法,但是后面我在其他的插件中发现了在EditorWindow中也可以使用

2.1 Monobehavior中调用

using UnityEngine;

public class test : MonoBehaviour
{
    Rect windowRect = new Rect(20, 20, 120, 50);

    private void Awake()
    {
        
    }


    void OnGUI()
    {
        windowRect = GUILayout.Window(0, windowRect, DoMyWindow, "My Window");
    }
    
    void DoMyWindow(int windowID)
    {
        if (GUILayout.Button("Hello World"))
        {
            print("Got a click");
        }
    }
}

Unity3D编辑器扩展——子窗体显示(GUILayout.Widnow)

2.2 EditorWindow中调用


using UnityEditor;
using UnityEngine;

public class TestWindow:EditorWindow
{
    [MenuItem("Demos/ChildWindow")]
    static void OpenWindow()
    {
        GetWindow<TestWindow>();
    }

    Rect windowRect = new Rect(20, 20, 120, 50);

    private void OnGUI()
    {
        BeginWindows();
        windowRect = GUILayout.Window(0, windowRect, DoMyWindow, "My Window");
        EndWindows();
    }

    void DoMyWindow(int windowID)
    {
        if (GUILayout.Button("Hello World"))
        {
            Debug.Log("Got a click");
        }
    }
}

Unity3D编辑器扩展——子窗体显示(GUILayout.Widnow)