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 and EndProperty automatically handle default labels, bold font for Prefab overrides, revert to Prefab right click menu, and setting showMixedValue to true if the values of the property are different when multi-object editing.

using UnityEngine;
using UnityEditor;

class Example : MonoBehaviour { // A slider function that takes a 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); // 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