EditorGUI.BeginProperty

Switch to Manual
public static GUIContent BeginProperty (Rect totalPosition, GUIContent label, SerializedProperty property);

Parameters

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

Returns

GUIContent 用于控件的实际标签。

Description

创建一个属性封装器,可用于使常规 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