包含此页的版本:
不含此页的版本:
本节介绍支持的数据类型转换和字段PropertyField.
UI Toolkit 中的大多数内置控件都实现了INotifyValueChanged接口。例如DoubleField实现INotifyValueChanged<Double>,这意味着您可以绑定DoubleFieldcontrol 设置为类型为double.您可以将更多数据类型与绑定系统绑定。例如,可以绑定类型为int设置为DoubleField.
下表列出了可以绑定的源数据类型和目标数据类型:
| 源数据类型 | 目标数据类型INotifyValueChanged |
|---|---|
long |
|
int |
|
double |
|
float |
|
char |
|
注意:为防止数据丢失,请使用PropertyField或使用适当的数据类型,如下面的 PropertyField 支持的字段表所示。
PropertyField
当检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表窗口,如果某个类型不存在自定义编辑器,则绑定系统调用InspectorElement.FillDefaultInspector().这会创建一个PropertyField对于每个SerializedProperty在SerializedObject.
每PropertyField在其下有一个匹配的控件,例如IntegerField表示int或Toggle表示bool.如果属性具有子属性,则PropertyField有一个Foldout控制。那Foldout在每个子属性下都有相应的默认控件。如果您创建了自定义PropertyDrawer对于属性,则可视化树 由轻量级节点组成的对象图,用于保存窗口或面板中的所有元素。它定义了使用 UI 工具包构建的每个 UI。
请参阅术语表从PropertyDrawer的CreatePropertyGUI()方法。
注意:
创建自定义 UI 时,请勿使用PropertyField除非你找不到它的特定控件。例如,若要在可视化树中创建控件并将其绑定到Color,请使用ColorField而不是PropertyField.这使得可视化树更轻量级,作更快。
使用PropertyField会产生额外的开销,因为它会解析绑定后要使用的具体字段。此额外步骤可能会影响性能。然而PropertyField对某些用途是有益的。例如,它支持自定义抽屉,您可以使用它以个性化的方式处理特定属性。这样就无需猜测绘图的字段类型,从而减少错误。
下表列出了以下系统支持的字段PropertyField及其数据类型:
| 田 | 数据类型 |
|---|---|
BoundsField |
边界 |
BoundsIntField |
边界整体 |
ColorField |
颜色 |
CurveField |
动画曲线 |
FloatField |
浮 |
GradientField |
梯度 |
Hash128Field |
哈希128 |
IntegerField |
整数 |
IntegerField |
int,用于 ArraySize |
LayerMaskField |
单位 |
LongField |
长 |
ObjectField |
UnityEngine.对象 |
PopupField<字符串> |
枚举 |
RectField |
矩形 |
RectIntField |
矩形内部 |
TextField |
字符串 |
TextField,maxLength=1 |
煳 |
Toggle |
布尔语 |
Vector2Field |
矢量2 |
Vector2IntField |
矢量2Int |
Vector3Field |
矢量3 |
Vector3IntField |
矢量3Int |
Vector4Field |
矢量4 |