EditorWindow.BeginWindows
Declaration
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 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.BeginGroup или GUI.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)); } }