Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

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.