Объявление
public static GUIContent BeginProperty(Rect totalPosition, GUIContent label, SerializedProperty property);Параметры
totalPosition | Прямоугольник на экране для использования в качестве элемента управления, включая метку, если применимо. |
label | Необязательный ярлык перед ползунком. Используйте null, чтобы использовать имя из SerializedProperty. Используйте GUIContent.none, чтобы не отображать метку. |
property | Объект SerializedProperty, используемый для элемента управления. |
Возвращает
GUIContent Фактическая метка, используемая для элемента управления.
Описание
Создаёт оболочку свойства, удобную для обеспечения работы обычных элементов управления графического интерфейса с SerializedProperty.
Большинство элементов управления графическим интерфейсом EditorGUI и EditorGUILayout уже имеют перегрузки, которые работают с SerializedProperty. Однако для элементов управления с графическим интерфейсом, которые не обрабатывают SerializedProperty, вы можете обернуть их внутри BeginProperty и EndProperty, как показано в примере ниже. Вы также можете использовать это для своих собственных настраиваемых элементов управления графическим интерфейсом.
BeginProperty и EndProperty автоматически обрабатывают метки по умолчанию, жирный шрифт для переопределений Prefab, возвращаются к контекстному меню Prefab и устанавливают для showMixedValue значение true, если значения свойства отличается при редактировании нескольких объектов.
using UnityEngine;
using UnityEditor;
class Example : MonoBehaviour
{
// Функция ползунка, которая принимает SerializedProperty
void Slider(Rect position, SerializedProperty property, float leftValue, float rightValue, GUIContent label)
{
label = EditorGUI.BeginProperty(position, label, property);
EditorGUI.BeginChangeCheck();
var newValue = EditorGUI.Slider(position, label, property.floatValue, leftValue, rightValue);
// Назначать значение обратно только в том случае, если оно действительно было изменено пользователем.
// В противном случае при многообъектном редактировании всем объектам будет присвоено одно значение,
// даже если пользователь не прикасался к элементу управления.
if (EditorGUI.EndChangeCheck())
{
property.floatValue = newValue;
}
EditorGUI.EndProperty();
}
}
Смотрите так же: EndProperty.