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

Типы элементов управления IMGUI

Существует ряд различных элементов управления IMGUI, которые можно создать. В этом разделе перечислены все доступные экранные и интерактивные элементы управления. Существуют и другие функции IMGUI, влияющие на макет элементов управления, которые описаны в разделе Макет Руководства.

Label

Ярлык не интерактивен. Это только для отображения. Его нельзя щелкнуть или иным образом переместить. Лучше всего отображать только информацию.

/* GUI.Label example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { void OnGUI () { GUI.Label (new Rect (25, 25, 100, 30), "Label"); } }
Метка, созданная кодом примера
Метка, созданная кодом примера

Button

Кнопка – это обычная интерактивная кнопка. Он будет реагировать один раз при нажатии, независимо от того, как долго мышь остается нажатой. Ответ происходит, как только кнопка мыши будет отпущена.

Основное использование

В UnityGUI кнопки возвращают значение true при нажатии на них. Чтобы выполнить некоторый код при нажатии кнопки, вы заключаете функцию GUI.Button в оператор if. Внутри оператора if находится код, который будет выполняться при нажатии кнопки.

/* GUI.Button example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { void OnGUI () { if (GUI.Button (new Rect (25, 25, 100, 30), "Button")) { // This code is executed when the Button is clicked } } }
Кнопка, созданная кодом примера
Кнопка, созданная кодом примера

RepeatButton

RepeatButton – это вариант обычной кнопки. Разница в том, что RepeatButton будет реагировать каждый кадр, пока кнопка мыши остается нажатой. Это позволяет создавать функции «нажми и удерживай».

Основное использование

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

/* GUI.RepeatButton example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { void OnGUI () { if (GUI.RepeatButton (new Rect (25, 25, 100, 30), "RepeatButton")) { // This code is executed every frame that the RepeatButton remains clicked } } }
Кнопка «Повторить», созданная с помощью примера кода
Кнопка «Повторить», созданная с помощью примера кода

TextField

Элемент управления TextField представляет собой интерактивное редактируемое однострочное поле, содержащее текстовую строку.

Основное использование

В текстовом поле всегда будет отображаться строка. Вы должны указать строку, которая будет отображаться в TextField. Когда в строку вносятся изменения, функция TextField возвращает отредактированную строку.

/* GUI.TextField example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private string textFieldString = "text field"; void OnGUI () { textFieldString = GUI.TextField (new Rect (25, 25, 100, 30), textFieldString); } }
TextField, созданный кодом примера
TextField, созданный кодом примера

TextArea

Элемент управления TextArea представляет собой интерактивную редактируемую многострочную область, содержащую текстовую строку.

Основное использование

Область TextArea всегда будет отображать строку. Вы должны указать строку, которая будет отображаться в TextArea. Когда в строку вносятся изменения, функция TextArea возвращает отредактированную строку.

/* GUI.TextArea example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private string textAreaString = "text area"; void OnGUI () { textAreaString = GUI.TextArea (new Rect (25, 25, 100, 30), textAreaString); } }
TextArea, созданный кодом примера
TextArea, созданный кодом примера

Toggle

Флажок Toggleпозволяет пользователю включать или выключать параметр. Подробнее
См. в Словарь
Элемент управления создает флажок с постоянным включенным/выключенным состоянием. Пользователь может изменить состояние, щелкнув по нему.

Основное использование

Состояние включения/выключения Toggle представлено логическим значением true/false. Вы должны указать логическое значение в качестве параметра, чтобы Toggle представлял фактическое состояние. Функция Toggle вернет новое логическое значение, если по ней щелкнуть. Чтобы зафиксировать эту интерактивность, вы должны назначить логическое значение для принятия возвращаемого значения функции Toggle.

/* GUI.Toggle example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private bool toggleBool = true; void OnGUI () { toggleBool = GUI.Toggle (new Rect (25, 25, 100, 30), toggleBool, "Toggle"); } }
Toggle, созданный кодом примера
Toggle, созданный кодом примера

Toolbar

Панель инструментовРяд кнопок и основных элементов управления в верхней части редактора Unity, позволяющий взаимодействовать с редактором. различными способами (например, масштабирование, перевод). Подробнее
См. в Словарь
Элемент управления представляет собой ряд кнопок. Одновременно может быть активна только одна из кнопок на панели инструментов, и она будет оставаться активной до тех пор, пока не будет нажата другая кнопка. Это поведение эмулирует поведение типичной панели инструментов. Вы можете определить произвольное количество кнопок на панели инструментов.

Основное использование

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

/* GUI.Toolbar example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private int toolbarInt = 0; private string[] toolbarStrings = {"Toolbar1", "Toolbar2", "Toolbar3"}; void OnGUI () { toolbarInt = GUI.Toolbar (new Rect (25, 25, 250, 30), toolbarInt, toolbarStrings); } }
Панель инструментов, созданная кодом примера
Панель инструментов, созданная кодом примера

SelectionGrid

Элемент управления SelectionGrid представляет собой многострочную панель инструментов. Вы можете определить количество столбцов и строк в сетке. Одновременно может быть активна только одна кнопка.

Основное использование

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

/* GUI.SelectionGrid example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private int selectionGridInt = 0; private string[] selectionStrings = {"Grid 1", "Grid 2", "Grid 3", "Grid 4"}; void OnGUI () { selectionGridInt = GUI.SelectionGrid (new Rect (25, 25, 300, 60), selectionGridInt, selectionStrings, 2); } }
SelectionGrid, созданный кодом примера
SelectionGrid, созданный кодом примера

HorizontalSlider

Элемент управления HorizontalSlider представляет собой типичный горизонтальный ползунковый регулятор, который можно перетаскивать для изменения значения между предопределенными минимальным и максимальным значениями.

Основное использование

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

/* Horizontal Slider example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private float hSliderValue = 0.0f; void OnGUI () { hSliderValue = GUI.HorizontalSlider (new Rect (25, 25, 100, 30), hSliderValue, 0.0f, 10.0f); } }
Горизонтальный слайдер, созданный с помощью примера кода
Горизонтальный слайдер, созданный с помощью примера кода

VerticalSlider

Элемент управления VerticalSlider представляет собой типичный вертикальный ползунковый регулятор, который можно перетаскивать для изменения значения между предопределенными минимальным и максимальным значениями.

Основное использование

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

/* Vertical Slider example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private float vSliderValue = 0.0f; void OnGUI () { vSliderValue = GUI.VerticalSlider (new Rect (25, 25, 100, 30), vSliderValue, 10.0f, 0.0f); } }
Вертикальный слайдер, созданный кодом примера
Вертикальный слайдер, созданный кодом примера

HorizontalScrollbar

Элемент управления HorizontalScrollbar похож на элемент управления Slider, но визуально похож на элементы прокрутки для веб-браузеров или текстовых процессоров. Этот элемент управления используется для навигации по элементу управления ScrollView.

Основное использование

Горизонтальные полосы прокрутки реализованы так же, как и горизонтальные ползунки, за одним исключением: существует дополнительный аргумент, который управляет шириной самой ручки полосы прокрутки.

/* Horizontal Scrollbar example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private float hScrollbarValue; void OnGUI () { hScrollbarValue = GUI.HorizontalScrollbar (new Rect (25, 25, 100, 30), hScrollbarValue, 1.0f, 0.0f, 10.0f); } }
Горизонтальная полоса прокрутки, созданная кодом примера
Горизонтальная полоса прокрутки, созданная кодом примера

VerticalScrollbar

Элемент управления VerticalScrollbar похож на элемент управления Slider, но визуально похож на элементы прокрутки для веб-браузеров или текстовых процессоров. Этот элемент управления используется для навигации по элементу управления ScrollView.

Основное использование

Вертикальные полосы прокрутки реализованы так же, как и вертикальные ползунки, за одним исключением: существует дополнительный аргумент, который управляет высотой самой ручки полосы прокрутки.

/* Vertical Scrollbar example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private float vScrollbarValue; void OnGUI () { vScrollbarValue = GUI. VerticalScrollbar (new Rect (25, 25, 100, 30), vScrollbarValue, 1.0f, 10.0f, 0.0f); } }
Вертикальная полоса прокрутки, созданная кодом примера
Вертикальная полоса прокрутки, созданная кодом примера

ScrollView

ScrollViews — это элементы управления, отображающие видимую область гораздо большего набора элементов управления.

Основное использование

ScrollView требует двух Rect в качестве аргументов. Первый Rect определяет расположение и размер видимой области ScrollView на экране. Второй Rect определяет размер пространства внутри видимой области. Если пространство внутри видимой области больше, чем видимая область, полосы прокрутки будут отображаться соответствующим образом. Вы также должны назначить и предоставить 2D-вектор, в котором хранится положение отображаемой области просмотра.

/* ScrollView example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private Vector2 scrollViewVector = Vector2.zero; private string innerText = "I am inside the ScrollView"; void OnGUI () { // Begin the ScrollView scrollViewVector = GUI.BeginScrollView (new Rect (25, 25, 100, 100), scrollViewVector, new Rect (0, 0, 400, 400)); // Put something inside the ScrollView innerText = GUI.TextArea (new Rect (0, 0, 400, 400), innerText); // End the ScrollView GUI.EndScrollView(); } }
ScrollView, созданный кодом примера
ScrollView, созданный кодом примера

Window

Windows — это перетаскиваемые контейнеры элементов управления. Они могут получать и терять фокус при нажатии. Из-за этого они реализованы немного иначе, чем другие элементы управления. Каждое окно имеет номер id, а его содержимое объявляется внутри отдельной функции, которая вызывается, когда окно получает фокус.

Основное использование

Windows — единственный элемент управления, для правильной работы которого требуется дополнительная функция. Вы должны предоставить номер id и имя функции, которая будет выполняться для окна. Внутри функции Window вы создаете свое реальное поведение или содержащиеся в нем элементы управления.

/* Window example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private Rect windowRect = new Rect (20, 20, 120, 50); void OnGUI () { windowRect = GUI.Window (0, windowRect, WindowFunction, "My Window"); } void WindowFunction (int windowID) { // Draw any Controls inside the window here } }
Окно, созданное кодом примера
Окно, созданное кодом примера

GUI.changed

Чтобы определить, выполнял ли пользователь какое-либо действие в графическом интерфейсе (нажал кнопку, перетащил ползунок и т. д.), прочтите значение GUI.changed из сценария. Это значение устанавливается в true, когда пользователь что-то сделал, что упрощает проверку пользовательского ввода.

Обычным сценарием может быть панель инструментов, где вы хотите изменить конкретное значение в зависимости от того, какая кнопка на панели инструментов была нажата. Вы не хотите назначать значение при каждом вызове OnGUI(), только когда была нажата одна из кнопок.

/* GUI.changed example */ using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { private int selectedToolbar = 0; private string[] toolbarStrings = {"One", "Two"}; void OnGUI () { // Determine which button is active, whether it was clicked this frame or not selectedToolbar = GUI.Toolbar (new Rect (50, 10, Screen.width - 100, 30), selectedToolbar, toolbarStrings); // If the user clicked a new Toolbar button this frame, we'll process their input if (GUI.changed) { Debug.Log("The toolbar was clicked"); if (0 == selectedToolbar) { Debug.Log("First button was clicked"); } else { Debug.Log("Second button was clicked"); } } } }

GUI.changed возвращает значение true, если какой-либо элемент управления GUI, размещенный до того, как он был изменен пользователем.

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