版本:Unity 6 (6000.0)
语言:English
可绑定元素参考
绑定系统实现细节

可绑定数据类型和字段

本节介绍由 PropertyField 支持的数据类型转换和字段。

数据类型转换

UI 工具包中的大多数内置控件都为特定数据类型实现了 INotifyValueChanged 接口。例如,DoubleField 实现了 INotifyValueChanged<Double>,这意味着您可以将 DoubleField 控件绑定到类型为 double 的属性。您可以使用绑定系统绑定更多数据类型。例如,您可以将类型为 int 的属性绑定到 DoubleField

下表列出了您可以绑定的源数据类型和目标数据类型

源数据类型 INotifyValueChanged 的目标数据类型
long
  • long
  • int
  • string
  • float
int
  • int
  • string
  • float
double
  • double
  • float
float
  • float
  • double
char
  • char
  • string

注意:为防止数据丢失,请使用 PropertyField 或使用下文 PropertyField 支持的字段表 中所示的适当数据类型。

PropertyField 支持的字段

检查器一个 Unity 窗口,显示有关当前选定 GameObject、资产或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表
窗口填充时,如果某个类型不存在自定义编辑器,则绑定系统会调用 InspectorElement.FillDefaultInspector()。这会为 SerializedObject 上的每个 SerializedProperty 创建一个 PropertyField

每个 PropertyField 在其下方都有一个匹配的控件,例如 IntegerField 用于表示 int,或 Toggle 用于表示 bool。如果属性具有子属性,则 PropertyField 具有一个 Foldout 控件。该 Foldout 在每个子属性下都有相应的默认控件。如果您为属性创建了自定义 PropertyDrawer,则将使用 PropertyDrawerCreatePropertyGUI() 方法返回的 视觉树一个由轻量级节点组成的对象图,包含窗口或面板中的所有元素。它定义了使用 UI 工具包构建的每个 UI。
参见 术语表

注意:

创建自定义 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 术语表
时,除非找不到特定控件,否则请勿使用 PropertyField。例如,要在视觉树中创建控件并将其绑定到 Color,请使用 ColorField 而不是 PropertyField。这使视觉树更轻量级,操作速度更快。

使用 PropertyField 会产生额外的开销,因为它会在绑定后解析要使用的具体字段。此额外步骤可能会影响性能。但是,PropertyField 对某些用途很有用。例如,它支持自定义绘制器,您可以使用它以个性化的方式处理特定属性。这消除了猜测绘制字段类型的需要,从而减少了错误。

下表列出了 PropertyField 支持的字段及其数据类型

字段 数据类型
BoundsField Bounds
BoundsIntField BoundsInt
ColorField Color
CurveField AnimationCurve
FloatField float
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,maxLength=1 char
Toggle bool
Vector2Field Vector2
Vector2IntField Vector2Int
Vector3Field Vector3
Vector3IntField Vector3Int
Vector4Field Vector4

其他资源

可绑定元素参考
绑定系统实现细节