Version: 5.6

EditorGUI.BeginProperty

切换到手册
public static GUIContent BeginProperty (Rect totalPosition, GUIContent label, SerializedProperty property);

参数

totalPosition 屏幕上用于控件的矩形,包括标签(如果适用)。
label (可选)滑动条前的标签。使用 null 将使用来自 SerializedProperty 的名称。使用 GUIContent.none 将不显示标签。
property 用于控件的 SerializedProperty。

返回

GUIContent 用于控件的实际标签。

描述

创建一个属性封装器,可用于使常规 GUI 控件与 SerializedProperty 配合使用。

大多数 EditorGUIEditorGUILayout GUI 控件已具有与 SerializedProperty 配合使用的重载。 但是,对于不处理 SerializedProperty 的 GUI 控件,您可以按以下所示示例将它们封装到 BeginProperty 和 EndProperty 中。 您也可以将其用于自己的自定义 GUI 控件。

如果在进行多对象编辑时遇到不同的属性值,BeginProperty 和 EndProperty 会自动处理默认标签、加粗预制件重载的字体、还原为预制件右键单击菜单,并在多对象编辑中涉及不同属性值的情况下,将 ·showMixedValue 设为 true。

// A slider function that takes a SerializedProperty
function Slider (position : Rect, property : SerializedProperty, leftValue : float, rightValue : float, label : GUIContent) {
    label = EditorGUI.BeginProperty (position, label, property);

EditorGUI.BeginChangeCheck (); var newValue = EditorGUI.Slider (position, label, property.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 ()) property.floatValue = newValue;

EditorGUI.EndProperty (); }

另请参阅:EndProperty