关闭由 EditorWindow.BeginWindows 开始的窗口组。
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);
}
}
BeginWindows/EndWindows 对的位置决定了弹出窗口的显示位置;所有窗口都会裁剪到
由 GUI.BeginGroup 或 GUI.BeginScrollView 定义的裁剪区域。下面是该情况的一个小示例:
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);
}
}