Version: 2017.3

PropertyScope

class in UnityEditor

Switch to Manual

Description

Создает обертку для свойства, полезно для создания обычных контролов GUI, работающих с SerializedProperty.

Most EditorGUI and EditorGUILayout GUI controls already have overloads that work with SerializedProperty. However, for GUI controls that don't handle SerializedProperty you can wrap them inside BeginProperty and EndProperty as shown in the example below. You can use this for your own custom GUI controls too.

BeginProperty и EndProperty автоматически обрабатывают текст по умолчанию, жирный шрифт для изменений в префабах, откат к префабу через контекстное меню и установку 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; } } }

See Also: BeginProperty.

Variables

contentThe actual label to use for the control.

Constructors

EditorGUI.PropertyScopeCreate a new PropertyScope and begin the corresponding property.