创建属性类型¶
属性提供了指定和检查节点的状态、外观和行为的手段。例如,属性可以定义颜色、指示按钮是否被按下或指定项目的对齐方式。
属性提供了一种统一的方式来访问 Kanzi 节点的数据,以便许多 Kanzi 子系统可以操作这些数据。这样,您可以,例如,动画化属性值,提供属性值之间的绑定,并监控属性值的变化。
Kanzi 中的每个属性都由属性类型描述。属性类型描述了属性的名称、类别以及属性可以具有的数据类型和值。
请注意,动画只能动画浮点数。因此,要动画具有多个值的属性(例如,颜色和变换),您可以将属性数据拆分为一组浮点属性数据属性(例如,颜色属性类型中的 RGBA 通道)。
为自定义属性类型设置和使用命名空间¶
自定义属性类型的名称在 Kanzi 应用程序中必须是唯一的。当您的 Kanzi 应用程序使用从不同 Kanzi Studio 项目导出的 kzb 文件时,为确保自定义属性类型的名称在该应用程序中保持唯一性,请在每个 kzb 文件中为自定义属性类型使用不同的命名空间。
当您在 Kanzi Engine 插件中创建属性类型时,请在所有插件和您在同一 Kanzi 应用程序中使用的 Kanzi Studio 项目中使用唯一名称。
在 Kanzi 中,您可以使用这些名称在您的应用程序中访问属性类型:
使用 Kanzi Engine API 访问属性类型的 Namespace.Name。
例如:要在 Gauges kzb 文件命名空间中访问名为 Speed 的属性类型,请使用 Gauges.Speed。
Name 以在着色器中访问属性类型。
例如,SpeedNeedle。
Namespace.Name 或 Name 以在绑定中访问属性类型。
Display Name 是一个用户友好的名称,您可以在 Library > Property Types 中看到。
例如,Speed Needle。
Kanzi Studio 项目默认情况下使用项目名称作为默认属性类型命名空间。如果项目名称包含空格,Kanzi Studio 会从命名空间名称中移除它们。
例如,如果项目名称是 Primary gauges,则默认项目属性命名空间是 Primarygauges。对于该项目中名为 Speed 的属性,属性的全名是 Primarygauges.Speed。
要更改项目属性命名空间,在主菜单中的 Kanzi Studio 中选择 Project > Properties,并将 Property Namespace 属性设置为您要使用的命名空间。
默认情况下,Kanzi Studio 现在对您创建的所有新的自定义属性类型使用新的项目属性命名空间。
创建属性类型¶
要创建属性类型:
在 Library 中,按 Alt 并右键单击 Property Types 并选择 Property Type。
在 New Property Type 窗口中,设置:
在 Naming 类别中,设置:
Name 用于在使用 Kanzi Engine API 访问属性时设置其名称。
属性类型名称不能含有:
属性名称开头或结尾不能使用句点 (.)
空格
制表符
斜线 (/)
反斜杠 ()
井号 (#)
左右大括号 ({})
@ 符号
Display Name 用于在 Kanzi Studio 中使用该属性时设置名称。输入 <Name> 以使用与您在 Name 属性中设置的相同名称。
Category 用于设置 Kanzi Studio 在 Properties 和 Add Properties 窗口中显示您的属性类型的类别。
使用 Category 属性可以在 Kanzi Studio 中快速找到您的属性类型。
Tooltip 用于设置 Kanzi Studio 在 Properties 和 Add Properties 窗口中显示的属性类型的工具提示文本。Kanzi Studio 将属性类型的 Kanzi Engine 名称附加到工具提示文本中。
小技巧
要从 Properties 快速访问自定义属性类型,请右键单击自定义属性类型并选择 Select in Library。
使用 Data Type 设置属性类型存储的数据种类。您可以使用以下数据类型之一:
Boolean 存储值 true 或 false,并且没有特定类型的属性。
Color 存储红色、绿色、蓝色和透明通道(RGBA)的颜色信息。
请注意,即使在 Kanzi Studio 中您可以为色调、饱和度、亮度和透明度通道(HSLA)设置颜色值,Kanzi 也会将它们存储为 RGBA。这意味着您只能动画化 RGBA 值。
Enumeration 存储了一组键值对,以便每个唯一键解析为一个唯一整数。
Flags 存储一个整数值位掩码,其中每个位都有各自的名称。为每个位使用 2 的幂值,以防止位重叠。
Float 存储单精度浮点值。
Integer 存储 32 位有符号整数值。
Matrix 3x3 存储浮点数的 3x3 矩阵,您可以使用它来存储 2D 节点的变换。
Matrix 4x4 存储浮点数的 4x4 矩阵,您可以使用它来存储 3D 节点的变换。
Project Item 存储对节点和资源的引用以及资源 ID,并且没有特定类型的属性。您只能在应用程序代码中使用 Project Item 数据类型,Kanzi 会将属性转换为目标节点或资源的路径,并以字符串格式表示。
Property Type 存储对其他属性类型的引用。您只能在应用程序代码中使用 Property Type 数据类型,为此 Kanzi 将属性转换为目标属性类型的字符串格式名称。
Range 存储了一组值。
Text 存储纯文本,并且没有特定类型的属性。
如要创建支持用户选择节点或资源的属性类型,或设置资源 ID,请使用 Project Item 属性类型。
Vector 2D 存储两个浮点数的向量。
Vector 3D 存储三个浮点数的向量。
Vector 4D 存储四个浮点数的向量。
使用 Editor 选择您要在 Kanzi Studio 的 Properties 窗口中用于设置该属性类型值的编辑器。可用的编辑器取决于数据类型。
使用 Is Inherited 标志设置节点能否从其祖先节点继承该属性类型的值。
使用 Affect Layout 标志设置该属性类型是否影响节点布局。当您启用 Affect Layout 且节点上该属性的值发生更改时,Kanzi 会重新计算该节点的布局。请注意,重新计算布局会降低应用程序性能。
例如,如果您使用自定义属性类型动画化内容,那么当边框尺寸发生变化时,启用 Affect Layout 设置。使用此设置,属性会更新布局和渲染。
使用 Affect Rendering 标志设置该属性类型是否影响节点渲染。当您启用 Affect Rendering 且节点上该属性的值发生更改时,Kanzi 会更新该节点的渲染。如果您创建的属性不影响布局或尺寸,则必须启用 Affect Rendering,才能看到您希望通过该属性实现的效果。例如,如果您使用该属性设置 Text Block 节点的颜色,请启用 Affect Rendering。请参阅 应用程序空闲状态。
使用 Material Rule Property 标志设置该属性类型能否影响材质规则。请参阅 在材质规则中使用自定义属性类型。
在 Type Specific 类别中,您可以设置特定于此属性的数据类型的参数。
例如,您可以设置该属性类型的下限值和上限值。
在 Value 部分,您可以设置属性的默认值和排序索引。
单击 Save。
Kanzi Studio 将属性类型存储在 Library > Property Types 中以 Namespace 命名的文件夹内,该命名空间是在属性类型的 Name 字段中设置的。
现在,您可以将该属性类型添加到节点中,并像使用 Kanzi 中的任何其他属性一样使用它。请参阅 在 Kanzi Studio 中使用属性。
将所有自定义属性类型移动到工程属性命名空间¶
要在您的 Kanzi Studio 项目中将所有自定义属性类型移动到项目属性命名空间中, 在 Library 中右键单击 Property Types 并选择 Add Property Namespace to Property Types。
在 Properties 窗口中排列属性类别¶
要在 Properties 窗口中设置属性类别的顺序,请选择 Edit > User Preferences,在 Properties 选项卡中的 Property Category 下拉菜单中选择一个属性类别,并设置属性类别的位置。
例如,您可以设置 Transform 2D 和您自己的 My Property Category 类别,以在 Description 类别之后显示。
备注
General 和 Description 属性类别始终显示在顶部。