Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

GUI.Window

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public static function Window(id: int, clientRect: Rect, func: GUI.WindowFunction, text: string): Rect;
public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, string text);
public static function Window(id: int, clientRect: Rect, func: GUI.WindowFunction, image: Texture): Rect;
public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, Texture image);
public static function Window(id: int, clientRect: Rect, func: GUI.WindowFunction, content: GUIContent): Rect;
public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, GUIContent content);
public static function Window(id: int, clientRect: Rect, func: GUI.WindowFunction, text: string, style: GUIStyle): Rect;
public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, string text, GUIStyle style);
public static function Window(id: int, clientRect: Rect, func: GUI.WindowFunction, image: Texture, style: GUIStyle): Rect;
public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, Texture image, GUIStyle style);
public static function Window(id: int, clientRect: Rect, func: GUI.WindowFunction, title: GUIContent, style: GUIStyle): Rect;
public static Rect Window(int id, Rect clientRect, GUI.WindowFunction func, GUIContent title, GUIStyle style);

Параметры

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

Возврат значений

Rect @return Прямоугольник на экране, обозначающий позицию и размер окна.

Описание

Вызывает всплывающее окно.

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

Важно: Если вы используете GUILayout для размещения ваших компонентов внутри окна, следует использовать GUILayout.Window. Также, если MonoBehaviour.useGUILayout установлен в false, то вызов GUI.Window не приведет к какому либо результату (несмотря на то, что это не функция GUILayout).

	var windowRect : Rect = Rect (20, 20, 120, 50);

function OnGUI () { // Register the window. Notice the 3rd parameter windowRect = GUI.Window (0, windowRect, DoMyWindow, "My Window"); }

// Make the contents of the window function DoMyWindow (windowID : int) { if (GUI.Button (Rect (10,20,100,20), "Hello World")) print ("Got a click"); }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public Rect windowRect = new Rect(20, 20, 120, 50); void OnGUI() { windowRect = GUI.Window(0, windowRect, DoMyWindow, "My Window"); } void DoMyWindow(int windowID) { if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World")) print("Got a click"); } }

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

	var windowRect0 : Rect = Rect (20, 20, 120, 50);
	var windowRect1 : Rect = Rect (20, 100, 120, 50);

function 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 function DoMyWindow (windowID : int) { if (GUI.Button (Rect (10,20,100,20), "Hello World")) print ("Got a click in window " + windowID); // Make the windows be draggable. GUI.DragWindow (Rect (0,0,10000,10000)); }
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() { windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, "My Window"); windowRect1 = GUI.Window(1, windowRect1, DoMyWindow, "My Window"); } void DoMyWindow(int windowID) { if (GUI.Button(new Rect(10, 20, 100, 20), "Hello World")) print("Got a click in window " + windowID); 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
	var doWindow0 : boolean = true;

// Make the contents of the window. function DoWindow0 (windowID : int) { GUI.Button (Rect (10,30, 80,20), "Click Me!"); }

function OnGUI () { // Make a toggle button for hiding and showing the window doWindow0 = GUI.Toggle (Rect (10,10,100,20), doWindow0, "Window 0"); // Make sure we only call GUI.Window if doWindow0 is true. if (doWindow0) GUI.Window (0, Rect (110,10,200,60), DoWindow0, "Basic Window"); }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public bool doWindow0 = true; void DoWindow0(int windowID) { GUI.Button(new Rect(10, 30, 80, 20), "Click Me!"); } void OnGUI() { doWindow0 = GUI.Toggle(new Rect(10, 10, 100, 20), doWindow0, "Window 0"); if (doWindow0) GUI.Window(0, new Rect(110, 10, 200, 60), DoWindow0, "Basic Window"); } }

Чтобы сделать окно, которое будет получать свой размер из автоматического GUI, используйте GUILayout.Window. Call Ordering Windows need to be drawn back-to-front; windows on top of other windows need to be drawn later than the ones below them. This means that you can not count on your DoWindow functions to be called in any particular order. In order for this to work seamlessly, the following values are stored when you create your window (using the Window function), and retrieved when your DoWindow gets called: GUI.skin, GUI.enabled, GUI.color, GUI.backgroundColor, GUI.contentColor, GUI.matrix.

	var windowRect0 : Rect = Rect (20, 20, 120, 50);
	var windowRect1 : Rect = Rect (20, 100, 120, 50);

function 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. function DoMyWindow (windowID : int) { if (GUI.Button (Rect (10,20,100,20), "Hello World")) print ("Got a click in window with color " + GUI.color); // Make the windows be draggable. GUI.DragWindow (Rect (0,0,10000,10000)); }
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() { GUI.color = Color.red; windowRect0 = GUI.Window(0, windowRect0, DoMyWindow, "Red Window"); GUI.color = Color.green; windowRect1 = GUI.Window(1, windowRect1, DoMyWindow, "Green Window"); } 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); GUI.DragWindow(new Rect(0, 0, 10000, 10000)); } }

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

See Also: DragWindow, BringWindowToFront, BringWindowToBack.