版本: Unity 6 (6000.0)
语言English
  • C#

EditorWindow.BeginWindows

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public void BeginWindows();

描述

标记所有弹出窗口的开始区域。

GUI.Window 在编辑器中的行为与在游戏中略有不同。在游戏中,GUI.Window 会在屏幕上弹出窗口。在编辑器中,GUI.Window 会在您的一个编辑器窗口内显示一个子窗口。Begin/EndWindows 用于确定这些窗口可以在哪里显示。您需要在 BeginWindows / EndWindows 对内包含对 GUI.WindowGUILayout.Window 的所有调用。例如:


一个简单的编辑器窗口,其中包含一个窗口和一个按钮。

此规则的一个例外是在 Editor.OnSceneGUI 中,窗口范围是隐式的。

using UnityEditor;
using UnityEngine;
using System.Collections;

public class IMGUIWindowDemo : EditorWindow
{
    // The position of the window
    public Rect windowRect = new Rect(100, 100, 200, 200);
    void OnGUI()
    {
        BeginWindows();

        // All GUI.Window or GUILayout.Window must come inside here
        windowRect = GUILayout.Window(1, windowRect, DoWindow, "Hi There");

        EndWindows();
    }

    // The window function. This works just like ingame GUI.Window
    void DoWindow(int unusedWindowID)
    {
        GUILayout.Button("Hi");
        GUI.DragWindow();
    }

    // Add menu item to show this demo.
    [MenuItem("Test/GUIWindow Demo")]
    static void Init()
    {
        EditorWindow.GetWindow(typeof(IMGUIWindowDemo));
    }
}

BeginWindows / EndWindows 对的位置决定了弹出窗口将出现在哪里;所有窗口都将剪辑到由 GUI.BeginGroupGUI.BeginScrollView 定义的剪辑区域。下面是一个简单的例子:


一个简单的编辑器窗口,其中包含一个窗口和一个按钮,并使用滚动条。

using UnityEditor;
using UnityEngine;
using System.Collections;

public class IMGUIWindowDemo2 : EditorWindow
{
    // The position of the window
    public Rect windowRect = new Rect(100, 100, 200, 200);

    // Scroll position
    public Vector2 scrollPos = Vector2.zero;

    void OnGUI()
    {
        // Set up a scroll view
        scrollPos = GUI.BeginScrollView(new Rect(0, 0, position.width, position.height), scrollPos, new Rect(0, 0, 1000, 1000));

        // Same code as before - make a window. Only now, it's INSIDE the scrollview
        BeginWindows();
        windowRect = GUILayout.Window(1, windowRect, DoWindow, "Hi There");
        EndWindows();
        // Close the scroll view
        GUI.EndScrollView();
    }

    void DoWindow(int unusedWindowID)
    {
        GUILayout.Button("Hi");
        GUI.DragWindow();
    }

    [MenuItem("Test/GUIWindow Demo 2")]
    static void Init()
    {
        EditorWindow.GetWindow(typeof(IMGUIWindowDemo2));
    }
}