Описание
Создайте оболочку свойства, удобную для обеспечения работы обычных элементов управления графического интерфейса с SerializedProperty.
Большинство элементов управления графическим интерфейсом EditorGUI и EditorGUILayout уже имеют перегрузки, которые работают с SerializedProperty. Однако для элементов управления с графическим интерфейсом, которые не обрабатывают SerializedProperty, вы можете обернуть их внутри BeginProperty и EndProperty, как показано в примере ниже. Вы также можете использовать это для своих собственных настраиваемых элементов управления графическим интерфейсом.
BeginProperty и EndProperty автоматически обрабатывают метки по умолчанию, жирный шрифт для переопределений Prefab, возвращаются к контекстному меню Prefab и устанавливают для showMixedValue значение true, если значения свойства отличается при редактировании нескольких объектов.
using UnityEngine;
using UnityEditor;
public class ExampleClass : MonoBehaviour
{
// A slider function that takes a SerializedProperty
void Slider(Rect position, SerializedProperty prop, float leftValue, float rightValue, GUIContent label)
{
using (var scope = new EditorGUI.PropertyScope(position, label, prop))
{
label = scope.content;
EditorGUI.BeginChangeCheck();
var newValue = EditorGUI.Slider(position, label, prop.floatValue, leftValue, rightValue);
// Only assign the value back if it was actually changed by the user.
// Otherwise a single value will be assigned to all objects when multi-object editing,
// even when the user didn't touch the control.
if (EditorGUI.EndChangeCheck())
prop.floatValue = newValue;
}
}
}
Смотрите так же: BeginProperty.
Свойства
content | Фактическая метка, используемая для элемента управления. |
Конструкторы
EditorGUI.PropertyScope | Создаёт новый PropertyScope и начните соответствующее свойство. |