This following describs the data type conversions and fields supported by PropertyField
.
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 |
|
int |
|
double |
|
float |
|
char |
|
Note: To prevent data loss, use a PropertyField
or use the appropriate data types as shown in the Fields supported by PropertyField table below.
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 treeAn object graph, made of lightweight nodes, that holds all the elements in a window or panel. It defines every UI you build with the UI Toolkit.
See in Glossary 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 |