Version: 2017.2 (switch to 2017.3b)
LanguageEnglish
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

EditorWindow.BeginWindows

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

public method BeginWindows(): void;
public void BeginWindows();

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.

#pragma strict
public class GUIWindowDemo extends EditorWindow {
	public var windowRect: Rect = new Rect(100, 100, 200, 200);
	function 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
	function DoWindow(unusedWindowID: int) {
		GUILayout.Button("Hi");
		GUI.DragWindow();
	}
	// Add menu item to show this demo.
	@MenuItem("Test/GUIWindow Demo")
	static function Init() {
		EditorWindow.GetWindow(GUIWindowDemo);
	}
}
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)); } }

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.

#pragma strict
public class GUIWindowDemo2 extends EditorWindow {
	public var windowRect: Rect = new Rect(100, 100, 200, 200);
	public var scrollPos: Vector2 = 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(unusedWindowID: int) {
		GUILayout.Button("Hi");
		GUI.DragWindow();
	}
	@MenuItem("Test/GUIWindow Demo 2")
	static function Init() {
		EditorWindow.GetWindow(GUIWindowDemo2);
	}
}
using UnityEditor;
using UnityEngine;
using System.Collections;

public class GUIWindowDemo2 : 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(GUIWindowDemo2)); } }

Did you find this page useful? Please give it a rating: