Объявление
public void BeginWindows();Описание
Отметьте начальную область всех всплывающих окон.
GUI.Window ведет себя в редакторе несколько иначе, чем в играх. В играх GUI.Window открывает всплывающее окно на вашем экране. В редакторе GUI.Window показывает подокно внутри одного из окон вашего редактора. Begin/EndWindows используется, чтобы определить, куда они могут идти. Все вызовы GUI.Window или GUILayout.Window должны находиться внутри BeginWindows / EndWindows. Вот так:

Исключением из этого правила является Editor.OnSceneGUI, где область действия окна является неявной.
using UnityEditor;
using UnityEngine;
using System.Collections;
public class GUIWindowDemo : 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(GUIWindowDemo));
}
}
Размещение пары BeginWindows / EndWindows определяет, где будут появляться всплывающие окна; все окна обрезаются до области отсечения, определенной GUI.BeginGroup или GUI.BeginScrollView. Небольшой пример этого

using UnityEditor;
using UnityEngine;
using System.Collections;
public class GUIWindowDemo2 : EditorWindow
{
// Положение окна
public Rect windowRect = new Rect(100, 100, 200, 200);
// Позиция прокрутки
public Vector2 scrollPos = Vector2.zero;
void OnGUI()
{
// Настройка просмотра прокрутки
scrollPos = GUI.BeginScrollView(new Rect(0, 0, position.width, position.height), scrollPos, new Rect(0, 0, 1000, 1000));
// Тот же код, что и раньше — создаем окно. Только теперь это ВНУТРИ прокрутки
BeginWindows();
windowRect = GUILayout.Window(1, windowRect, DoWindow, "Hi There");
EndWindows();
// Закрыть вид прокрутки
GUI.EndScrollView();
}
void DoWindow(int unusedWindowID)
{
GUILayout.Button("Hi");
GUI.DragWindow();
}
[MenuItem("Test/GUIWindow Demo 2")]
static void Init()
{
EditorWindow.GetWindow(typeof(GUIWindowDemo2));
}
}