Editor工具开发基础四:窗口EditorWindow

目录

1.设置窗口位置和大小

2.设置窗口最大和最小

3.设置窗口标题

4.设置窗中窗 BeginWindows和EndWindows

5.添加窗中窗可拖动 GUI.DragWindow()

完整代码:


public class EditorToolWindow : EditorWindow {
    public static EditorToolWindow ins;

    [MenuItem("EditorTool/OpenWindow")]
    public static void OpenWindow() {
        ins = GetWindow<EditorToolWindow>();
        ins.Show();
    }
}

效果:

 

1.设置窗口位置和大小

public class EditorToolWindow : EditorWindow {
    public static EditorToolWindow ins;

    [MenuItem("EditorTool/OpenWindow")]
    public static void OpenWindow1() {
        Rect rect = new Rect(new Vector2(500, 300), new Vector2(300, 500));
        ins = GetWindow<EditorToolWindow>();
        ins.position = rect;
        ins.Show();
    }
}

 tips: 另一种写法
 ins = GetWindowWithRect<EditorToolWindow>(rect);
 ins.Show();

效果:

2.设置窗口最大和最小

        ins.maxSize = new Vector2(500, 500);
        ins.minSize = new Vector2(100, 100);

3.设置窗口标题

     ins.titleContent = new GUIContent("我是窗口标题");

4.设置窗中窗 BeginWindows和EndWindows

Rect winRact = new Rect(new Vector2(100, 100), new Vector2(200, 200));
private void OnGUI() {
        BeginWindows();
        GUI.Window(1, winRact, DoWindow, "窗中窗");
        EndWindows();
    }
void DoWindow(int id) {
        GUILayout.Button("按钮");
    }

效果:

5.添加窗中窗可拖动 GUI.DragWindow()

Rect winRact = new Rect(new Vector2(100, 100), new Vector2(200, 200));
    private void OnGUI() {
        BeginWindows();
        winRact = GUI.Window(1, winRact, DoWindow, "窗中窗");
        EndWindows();
    }

 

    void DoWindow(int id) {
        GUILayout.Button("按钮");
        GUI.DragWindow();
    }

注:
winRact = GUI.Window(1, winRact, DoWindow, "窗中窗");
此处如果不用winRact接收返还 窗口将无法拖动

效果:

完整代码:

using UnityEngine;
using UnityEditor;

public class EditorToolWindow : EditorWindow {
    public static EditorToolWindow ins;

    [MenuItem("EditorTool/OpenWindow")]
    public static void OpenWindow1() {
        Rect rect = new Rect(new Vector2(500, 100), new Vector2(300, 500));

        ins = GetWindow<EditorToolWindow>();
        ins.position = rect;

        ins.maxSize = new Vector2(500, 500);
        ins.minSize = new Vector2(100, 100);
        ins.titleContent = new GUIContent("我是窗口标题");
        ins.Show();
    }
    Rect winRact = new Rect(new Vector2(100, 100), new Vector2(200, 200));
    private void OnGUI() {
        BeginWindows();
        winRact = GUI.Window(1, winRact, DoWindow, "窗中窗");
        EndWindows();
    }

    void DoWindow(int id) {
        GUILayout.Button("关闭");
        GUI.DragWindow();
    }
}

猜你喜欢

转载自blog.csdn.net/SmillCool/article/details/129241748