Version: 2021.3
Bindable elements reference
Binding system implementation details

Bindable data types and fields

This following describs the data type conversions and fields supported by PropertyField.

Data type conversions

Most built-in controls in UI Toolkit implement the INotifyValueChanged interface for a specific data type. For example, DoubleField implements INotifyValueChanged<Double>, which means you can bind the DoubleField control to a property of type double. You can bind more data types with the binding system. For example, you can bind a property of type int to a DoubleField.

The following table lists the source and target data types that you can bind:

Source data type Target data type of INotifyValueChanged
long
  • long
  • int
  • string
  • float
int
  • int
  • string
  • float
double
  • double
  • float
float
  • float
  • double
char
  • char
  • string

Note: To prevent data loss, use a PropertyField or use the appropriate data types as shown in the Fields supported by PropertyField table below.

Fields supported by PropertyField

When the Inspector window is populated, if a custom Editor does not exist for a type, the binding system calls InspectorElement.FillDefaultInspector(). This creates a PropertyField for each SerializedProperty on the SerializedObject.

Each PropertyField has a matching control under it, such as an IntegerField to represent an int, or a Toggle to represent a bool. If the property has sub-properties, the PropertyField has a Foldout control. That Foldout has the appropriate default controls under for each sub-property. If you created a custom PropertyDrawer for a Property, the visual tree returned from the PropertyDrawer’s CreatePropertyGUI() method is used instead.

Note: When you create custom UI, don’t use a PropertyField unless you can’t find a specific control for it. For example, to create a control in your visual tree and bind it to a Color, use a ColorField rather than a PropertyField. This makes visual trees more lightweight and the operations faster.

The following table lists fields supported by PropertyField and their data type:

字段 数据类型
BoundsField Bounds
BoundsIntField BoundsInt
ColorField Color
CurveField AnimationCurve
FloatField 浮点精度
GradientField Gradient
Hash128Field Hash128
IntegerField int
IntegerField int(对于 ArraySize)
LayerMaskField unit
LongField long
ObjectField UnityEngine.Object
PopupField<string> Enum
RectField Rect
RectIntField RectInt
TextField string
TextField, with a maxLength=1 char
Toggle bool
Vector2Field Vector2
Vector2IntField Vector2Int
Vector3Field Vector3
Vector3IntField Vector3Int
Vector4Field Vector4

其他资源

Bindable elements reference
Binding system implementation details