EditorWindow.BeginWindows

function BeginWindows () : void

Description

Mark the beginning area of all popup windows.

GUI.Window behaves somewhat differently in the editor than inside your games. In games, GUI.Window pops up a window on your screen. In the editor, GUI.Window shows a subwindow inside one of your editor windows. Begin/EndWindows is used to determine where these can go. You need to have all calls to GUI.Window or GUILayout.Window inside a BeginWindows / EndWindows pair. Like this:


Simple editor Window with a window and a button inside.

class GUIWindowDemo extends EditorWindow {
// The position of the window
var windowRect = Rect (100,100,200,200);

// Main GUI Function
function OnGUI () {
// Begin Window
BeginWindows ();

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

// Collect all the windows between the two.
EndWindows ();
}

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

// Add menu item to show this demo.
@MenuItem ("Test/GUIWindow Demo")
static function Init () {
EditorWindow.GetWindow (GUIWindowDemo);
}
}

The placement of the BeginWindows / EndWindows pair determines where popup windows will appear; all windows are clipped to the clipping area defined by GUI.BeginGroup or GUI.BeginScrollview. A small example of that


Simple editor window with a window and a button inside using scroll bars.

class GUIWindowDemo2 extends EditorWindow {
// The position of the window
var windowRect = Rect (100,100,200,200);

// Scroll position
var scrollPos = Vector2.zero;

function 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 ();
}

function DoWindow () {
GUILayout.Button ("Hi");
GUI.DragWindow ();
}

@MenuItem ("Test/GUIWindow Demo 2")
static function Init () {
EditorWindow.GetWindow (GUIWindowDemo2);
}
}