EditorGUILayout
класс в UnityEditor
Описание
Автоматическая расположенная версия EditorGUI.
Этот класс во многом повторяет функциональность EditorGUIЭто полезно для размещения кнопок и других GUI элементов, когда вы не беспокоитесь о точном расположении пикселей каждого элемента, а интересуетесь только относительным расположением ваших элементов.
EditorGUILayout имеет два основных вида методов: Методы для определения области и методы для создания GUI элементов. Если элемент определен вне области, по умолчанию он будет вертикально выравниваться.
Методы определения областей часто разделяются на пару методов: один начинается со слова «Begin», а другой — со слова «End». Например: EditorGUILayout.BeginHorizontal и EditorGUILayout.EndHorizontal. Любой EditorGUI или EditorGUILayout код, находящийся между методом "Begin" и методом "End", будет размещён в GUI рядом с другими элементами в соответствии с использованным методом области. Например, все элементы, размещённые после EditorGUILayout.BeginHorizontal Элементы GUI после этого вызова будут расположены горизонтально рядом друг с другом. Область можно вложить в другую область, но учтите: каждому вызову Begin должен соответствовать вызов End, иначе возникнут ошибки.
Одно из отличий EditorGUILayout от GUILayout является пока GUILayout.BeginHorizontal и другие аналогичные методы не имеют типа возврата, EditorGUILayout возвращает Rect Этот Rect затем может быть передан методам, не являющимся EditorGUILayout, чтобы включить их в область, ограниченную методами EditorGUILayout.
В зависимости от того, какой из методов "Begin" вы используете, тип возврата и точный метод его использования будут несколько отличаться. По возможности, проверяйте документацию для каждого используемого метода, чтобы убедиться, что вы используете его правильно.
После того, как вы определили область в коде, вы можете заполнить GUI полями, которые будут содержать элементы, которые могут быть видны или взаимодействовать с вашими пользователями. Некоторые примеры методов, используемых для создания полей: EditorGUILayout.LabelField, EditorGUILayout.PasswordField, и EditorGUILayout.Toggle.
Методы EditorGUILayout используются вместе с GUILayout и EditorGUI методов создания полностью функционирующей системы GUI. Некоторые методы имеются только в одном из этих APIs, так что хорошо проверить все из них, если вы не можете найти конкретный элемент, который вы хотели бы использовать. Например, для создания кнопки, вы хотите использовать GUILayout.Button.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;
public class EditorGUILayoutExample : EditorWindow { Vector2 scrollPos; string t = "This is a label inside a Scroll view!";
[MenuItem("Examples/EditorGUILayout Example")] static void Init() { EditorGUILayoutExample window = (EditorGUILayoutExample)EditorWindow.GetWindow(typeof(EditorGUILayoutExample), true, "My Empty Window"); window.Show(); }
void OnGUI() { // Creates a horizontally laid out group EditorGUILayout.BeginHorizontal();
// Creates a ScrollView within that group scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(100), GUILayout.Height(100));
// Creates a label element within the ScrollView GUILayout.Label(t);
// Ends the ScrollView EditorGUILayout.EndScrollView();
// Places a button within the Horizontal area, but outside the ScrollView if (GUILayout.Button("Add More Text", GUILayout.Width(100), GUILayout.Height(100))) t += " \nAnd this is more text!";
// Ends the Horizontal area EditorGUILayout.EndHorizontal();
// Places a button outside the Horizontal area if (GUILayout.Button("Clear")) t = ""; } }
Статические методы
| Метод | Описание |
|---|---|
| BeginBuildTargetSelectionGrouping | Начать группировку целей сборки и получить выбранный BuildTargetGroup обратно. |
| BeginFadeGroup | Начинает группу, которая может быть скрытой/показанной, и переход будет анимирован. |
| BeginFoldoutHeaderGroup | Сделайте метку со стрелкой, расположенной слева от нее. |
| BeginHorizontal | Начать горизонтальную группу и получить его прямой обратно. |
| BeginScrollView | Запустите автоматически созданное прокручивание. |
| BeginToggleGroup | Вертикальная группа начинается с переключателя, позволяющего включить или отключить все элементы управления в группе одновременно. |
| BeginVertical | Начать вертикальную группу и получить его прямой обратно. |
| BoundsField | Сделать поле Center & Extents для ввода границ. |
| BoundsIntField | Поле Position & Size для ввода BoundsInt. |
| ColorField | Сделайте поле для выбора Цвета. |
| CurveField | Сделайте поле для редактирования AnimationCurve. |
| DelayedDoubleField | Создать поле с задержкой для ввода дубликатов. |
| DelayedFloatField | Сделайте поле текста с отсрочкой для ввода плавающих чисел. |
| DelayedIntField | Сделать поле с отсрочкой для ввода целых чисел. |
| DelayedTextField | Сделать отложенное текстовое поле. |
| DoubleField | Создайте текстовое поле для ввода двойных значений. |
| DropdownButton | Сделайте кнопку, которая реагирует на нажатие мыши, для отображения вашего собственного раскрывающегося списка. |
| EditorToolbar | Создает панель инструментов, заполненную указанным набором инструментов редактора. |
| EditorToolbarForTarget | Создает панель инструментов, заполненную коллекцией инструментов редактора, которые соответствуют EditorToolAttribute в объекте назначения. |
| EndBuildTargetSelectionGrouping | Закрыть группу, начавшуюся с BeginBuildTargetSelectionGrouping. |
| EndFadeGroup | Закрывает группу, начавшуюся с BeginFadeGroup. |
| EndFoldoutHeaderGroup | Закрывает группу, начавшуюся с BeginFoldoutHeaderGroup. |
| EndHorizontal | Закрыть группу, начавшуюся с BeginHorizontal. |
| EndScrollView | Завершает scrollview, начатый с вызова BeginScrollView. |
| EndToggleGroup | Закрыть группу, начавшуюся с BeginToggleGroup. |
| EndVertical | Закрыть группу, начавшуюся с BeginVertical. |
| EnumFlagsField | При щелчке показывает меню с пунктом для каждого значения перечислимого типа. |
| EnumPopup | Создать всплывающее поле выбора перечисления. |
| FloatField | Создайте текстовое поле для ввода значений с плавающей запятой. |
| Foldout | Сделайте метку со стрелкой, расположенной слева от нее. |
| GetControlRect | Получить rect для элемента управления Редактор. |
| GradientField | Создайте поле для редактирования Градиента. |
| HelpBox | Создайте окно помощи с сообщением для пользователя. |
| InspectorTitlebar | Сделать заголовок окна инспектора. |
| IntField | Создать текстовое поле для ввода целых чисел. |
| IntPopup | Сделать поле выбора целым числом. |
| IntSlider | Сделать ползунок, который пользователь может перетаскивать, чтобы изменить целое число между мин и макс. |
| LabelField | Создайте поле метки. (Пользуется для отображения информации только для чтения.) |
| LayerField | Сделать поле выбора слоя. |
| LinkButton | Сделайте метку ссылки, которую можно нажать. |
| LongField | Создать текстовое поле для ввода длинных целых чисел. |
| MaskField | Сделайте поле для масок. |
| MinMaxSlider | Создайте специальный ползунок, который пользователь может использовать для определения диапазона между мин и макс. |
| ObjectField | Сделайте поле для получения любого типа объекта. |
| PasswordField | Создайте текстовое поле, в котором пользователь может ввести пароль. |
| Popup | Создать общее поле выбора всплывающего окна. |
| PrefixLabel | Сделайте метку перед некоторым контролем. |
| PropertyField | Создайте поле для SerializedProperty. |
| RectField | Сделайте X, Y, W & H поле для ввода Rect. |
| RectIntField | Сделайте поле X, Y, W & H для ввода RectInt. |
| RenderingLayerMaskField | Создает поле выбора слоя. |
| SelectableLabel | Сделайте поле метки выбираемым. (Полезно для отображения информации только для чтения, которую можно скопировать и вставить.) |
| Slider | Сделайте ползунок, который пользователь может перетаскивать, чтобы изменить значение между мин и макс. |
| Space | Сделайте небольшой пробел между предыдущим и следующим элементами управления. |
| TagField | Сделайте поле выбора тегов. |
| TextArea | Создайте текстовую область. |
| TextField | Сделайте текстовое поле. |
| Toggle | Сделай переключатель. |
| ToggleLeft | Сделайте поле переключателя, где переключатель находится слева, а метка сразу же справа от него. |
| ToolContextToolbar | Заполняет панель инструментов указанной коллекцией контекстов инструментов редактора. |
| ToolContextToolbarForTarget | Создает панель инструментов, заполненную коллекцией EditorToolContext, которые соответствуют EditorToolContextAttribute.targetType целевого объекта. |
| Vector2Field | Сделайте поле X & Y для ввода Vector2. |
| Vector2IntField | Сделайте X & Y целое поле для ввода Vector2Int. |
| Vector3Field | Сделайте поле X, Y & Z для ввода Vector3. |
| Vector3IntField | Создайте целое поле X, Y и Z для ввода Vector3Int. |
| Vector4Field | Сделайте поле X, Y, Z & W для ввода Vector4. |