版本:6000.0+
此示例演示了如何将数据源资源的多个属性绑定到__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary Builder 中的 UI 控件。
此示例创建了一个包含 Vector3 属性和 float 属性的数据源资源。float 属性是一个只读属性,返回 Vector3 属性的 x、y 和 z 值的总和。此示例将 Vector3 属性绑定到 Vector3Field,将 float 属性绑定到 FloatField。在 UI 中更改 Vector3 属性时,FloatField 会显示 Vector3 属性的 x、y 和 z 值的总和。
此示例还演示了如何使用 To Source 绑定模式在 UI 更改时更新数据源。
您可以在此 GitHub 代码仓库中找到此示例创建的完整文件。
本指南适用于熟悉 Unity 编辑器、UI 工具包和 C# 脚本的开发者。在开始之前,请熟悉以下内容:
创建一个包含要绑定的属性的数据源资源。
Assets 文件夹中,创建一个名称为 ExampleMultiPropertiesObject.cs 并包含以下内容的 C# 脚本:using Unity.Properties;
using UnityEngine;
using UnityEngine.UIElements;
#if UNITY_EDITOR
using UnityEditor;
#endif
[CreateAssetMenu]
public class ExampleMultiPropertiesObject : ScriptableObject
{
[Header("Bind to multiple properties")]
[CreateProperty]
public Vector3 vector3Value;
[CreateProperty]
public float sumOfVector3Properties => vector3Value.x + vector3Value.y + vector3Value.z;
}
Assets 文件夹中创建一个数据源资源。ExampleMultiPropertiesObject.asset。创建一个 UI 并将它绑定到上一步中创建的数据源资产。在此示例中,您将创建一个 UXML 文件,其中包含一个 VisualElement,其子元素为 Vector3Field 和 FloatField。
Assets 文件夹中,创建一个名为 ExampleMultiPropertiesObject.uxml 的 UXML 文件。ExampleObject.uxml 文件可在 UI Builder 中打开该文件。将 UI 绑定到您在上一步中创建的数据源资源。
在 VisualElement 的检视 (Inspector) 面板中,从绑定 (Bindings) > 数据源 (Data Source) > 对象 (Object) 列表中选择 ExampleMultiPropertiesObject。
在 Vector3Field 的检视 (Inspector) 面板中,右键点击值 (Value) 属性并选择添加绑定 (Add binding)。
在添加绑定 (Add binding) 窗口中,从数据源路径 (Data Source Path) 列表中选择 vector3Value。
从绑定模式 (Binding Mode) 列表中选择 To Source。这样就会在 UI 更改时更新数据源。

选择添加绑定 (Add binding) 以应用所做的更改。
将 FloatField 的 value 属性绑定到数据源资源的 sumOfVector3Properties 属性。
ExampleMultiPropertiesObject.uxml 文件如下所示:<engine:UXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:engine="UnityEngine.UIElements"
xmlns:editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
<engine:VisualElement data-source="MulPropertyObject.asset" name="VisualElement" style="flex-grow: 1;">
<engine:Vector3Field label="Vec3 Field">
<Bindings>
<engine:DataBinding property="value" data-source-path="vector3Value" binding-mode="ToSource" />
</Bindings>
</engine:Vector3Field>
<engine:FloatField label="Float Field" name="FloatField">
<Bindings>
<engine:DataBinding property="value" data-source-path="sumOfVector3Properties" binding-mode="ToTarget" />
</Bindings>
</engine:FloatField>
</engine:VisualElement>
</engine:UXML>
要在 UI Builder 中测试绑定,请更新 Vector3 属性的值。如果绑定设置正确,则会在数据源资源中复制这些值。
Assets 文件夹中,选择 ExampleMultiPropertiesObject.asset 文件。在 ExampleObject.asset 的检视面板 (Inspector) 窗口中,Vector3 Value 会更改为输入的数字。