Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

GUI.Window

Объявление

public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, string text);

public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, Texture image);

public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, GUIContent content);

public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, string text, GUIStyle style);

public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, Texture image, GUIStyle style);

public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, GUIContent title, GUIStyle style);

Параметры

Style Необязательный стиль для окна. Если его не указать, используется стиль окна из текущего GUISkin.
id Идентификационный номер окна (может быть любым значением, главное, чтобы оно было уникальным).
clientRect Экранный прямоугольник, обозначающий положение и размер окна.
func Функция скрипта для отображения содержимого окна.
text Текст для отображения внутри окна.
image Изображение для рендеринга внутри окна.
content GUIContent для отображения внутри окна.
style Информация о стиле для окна.
title Текст, отображаемый в строке заголовка окна.

Возвращает

Rect Экранный прямоугольник, обозначающий положение и размер окна.

Описание

Создать всплывающее окно.

Окна располагаются над обычными элементами управления графическим интерфейсом, поддерживают фокусировку по щелчку и могут быть перетаскиваемы конечным пользователем. В отличие от других элементов управления, вам необходимо передать им отдельную функцию, которая отображает элементы управления GUI внутри окна.

Примечание. Если вы используете GUILayout для размещения компонентов внутри окна, вам следует использовать GUILayout.Window. Кроме того, если для параметра MonoBehaviour.useGUILayout задано значение false, то вызов GUI.Window не будет иметь никакого эффекта, даже если это не функция GUILayout.

using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Rect windowRect = new Rect(20, 20, 120, 50); void OnGUI() { // Register the window. Notice the 3rd parameter windowRect = GUI.Window(0, windowRect, DoMyWindow, "My Window"); } // Make the contents of the window void DoMyWindow(int windowID) { if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World")) { print("Got a click"); } } }

Вы можете использовать одну и ту же функцию для создания нескольких окон. Просто убедитесь, что каждое окно имеет собственный идентификатор. Пример:

using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Rect windowRect0 = new Rect(20, 20, 120, 50); public Rect windowRect1 = new Rect(20, 100, 120, 50); void OnGUI() { // Register the window. We create two windows that use the same function // Notice that their IDs differ windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, "My Window"); windowRect1 = GUI.Window(1, windowRect1, DoMyWindow, "My Window"); } // Make the contents of the window void DoMyWindow(int windowID) { if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World")) { print("Got a click in window " + windowID); } // Make the windows be draggable. GUI.DragWindow(new Rect(0, 0, 10000, 10000)); } }

Чтобы перестать показывать окно, просто перестаньте вызывать GUI.Window из основной функции OnGUI:

// boolean variable to decide whether to show the window or not. // Change this from the in-game GUI, scripting, the inspector or anywhere else to // decide whether the window is visible using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public bool doWindow0 = true; // Make the contents of the window. void DoWindow0(int windowID) { GUI.Button(new Rect(10, 30, 80, 20), "Click Me!"); } void OnGUI() { // Make a toggle button for hiding and showing the window doWindow0 = GUI.Toggle(new Rect(10, 10, 100, 20), doWindow0, "Window 0"); // Make sure we only call GUI.Window if doWindow0 is true. if (doWindow0) { GUI.Window(0, new Rect(110, 10, 200, 60), DoWindow0, "Basic Window"); } } }

Чтобы создать окно, размер которого определяется автоматическим макетом графического интерфейса, используйте GUILayout.Window. Порядок звонков Окна должны быть расположены задом наперед; окна поверх других окон должны быть отрисованы позже, чем те, что под ними. Это означает, что вы не можете рассчитывать на то, что ваши функции DoWindow будут вызываться в каком-то определенном порядке. Для бесперебойной работы следующие значения сохраняются при создании окна (с помощью функции Window) и извлекаются при вызове DoWindow: GUI.skin, GUI.enabled, GUI.color, GUI.backgroundColor, GUI.contentColor, GUI.matrix. using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Rect windowRect0 = new Rect(20, 20, 120, 50); public Rect windowRect1 = new Rect(20, 100, 120, 50); void OnGUI() { // Here we make 2 windows. We set the GUI.color value to something before each. GUI.color = Color.red; windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, "Red Window"); GUI.color = Color.green; windowRect1 = GUI.Window(1, windowRect1, DoMyWindow, "Green Window"); } // Make the contents of the window. // The value of GUI.color is set to what it was when the window // was created in the code above. void DoMyWindow(int windowID) { if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World")) { print("Got a click in window with color " + GUI.color); } // Make the windows be draggable. GUI.DragWindow(new Rect(0, 0, 10000, 10000)); } }

Обратите внимание, что вы можете использовать альфа-компонент GUI.color для затемнения окон.

Смотрите так же: DragWindow, BringWindowToFront, BringWindowToBack.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3