Version: Unity 6.0 (6000.0)
语言 : 中文
运行时数据绑定示例
使用类型转换器创建运行时绑定

使用运行时绑定来绑定多个属性

版本:6000.0+

此示例演示了如何将数据源资源的多个属性绑定到__ UI__(即用户界面,User Interface)让用户能够与您的应用程序进行交互。Unity 目前支持三种 UI 系统。更多信息
See in Glossary
Builder 中的 UI 控件。

示例概述

此示例创建了一个包含 Vector3 属性和 float 属性的数据源资源。float 属性是一个只读属性,返回 Vector3 属性的 xyz 值的总和。此示例将 Vector3 属性绑定到 Vector3Field,将 float 属性绑定到 FloatField。在 UI 中更改 Vector3 属性时,FloatField 会显示 Vector3 属性的 xyz 值的总和。

此示例还演示了如何使用 To Source 绑定模式在 UI 更改时更新数据源。

UI Builder 预览模式
UI Builder 预览模式

您可以在此 GitHub 代码仓库中找到此示例创建的完整文件。

先决条件

本指南适用于熟悉 Unity 编辑器、UI 工具包和 C# 脚本的开发者。在开始之前,请熟悉以下内容:

创建数据源资源

创建一个包含要绑定的属性的数据源资源。

  1. 使用任何模板在 Unity 中创建项目。
  2. 在您的项目的 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;
}

创建示例对象资源

  1. 选择资源 (Assets) > 创建 (Create) > Example MultiProperties Object。这会在项目的 Assets 文件夹中创建一个数据源资源。
  2. 将资源重命名为 ExampleMultiPropertiesObject.asset

创建 UI

创建一个 UI 并将它绑定到上一步中创建的数据源资产。在此示例中,您将创建一个 UXML 文件,其中包含一个 VisualElement,其子元素为 Vector3Field 和 FloatField。

  1. 在项目的 Assets 文件夹中,创建一个名为 ExampleMultiPropertiesObject.uxml 的 UXML 文件。
  2. 双击 ExampleObject.uxml 文件可在 UI Builder 中打开该文件。
  3. 层级视图 (Hierarchy) 面板中,添加 VisualElement
  4. 添加 Vector3FieldFloatField 作为 VisualElement 的子元素。

将 Vector3Field 绑定到数据源

将 UI 绑定到您在上一步中创建的数据源资源。

  1. VisualElement检视 (Inspector) 面板中,从绑定 (Bindings) > 数据源 (Data Source) > 对象 (Object) 列表中选择 ExampleMultiPropertiesObject

  2. Vector3Field检视 (Inspector) 面板中,右键点击值 (Value) 属性并选择添加绑定 (Add binding)

  3. 添加绑定 (Add binding) 窗口中,从数据源路径 (Data Source Path) 列表中选择 vector3Value

  4. 绑定模式 (Binding Mode) 列表中选择 To Source。这样就会在 UI 更改时更新数据源。

    设置 VisualElement 绑定数据源

  5. 选择添加绑定 (Add binding) 以应用所做的更改。

将 FloatField 绑定到数据源

将 FloatField 的 value 属性绑定到数据源资源的 sumOfVector3Properties 属性。

  1. Float检视 (Inspector) 面板中,右键单击值 (Value) 属性并选择 Add binding
  2. 添加绑定 (Add binding) 窗口中,从数据源路径 (Data Source Path) 列表中选择 sumOfVector3Properties
  3. 绑定模式 (Binding Mode) 列表中选择至目标 (To Target)。这会在数据源发生更改时更新 UI。
  4. 选择添加绑定 (Add binding) 以应用所做的更改。
  5. 保存并关闭 UI Builder。您的 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 预览模式下测试绑定

要在 UI Builder 中测试绑定,请更新 Vector3 属性的值。如果绑定设置正确,则会在数据源资源中复制这些值。

  1. 在 UI Builder 视口中,选择预览 (Preview)
  2. Vector3FieldXYZ 字段中输入随机数。FloatField 显示您输入的数字的总和。
  3. 在项目的 Assets 文件夹中,选择 ExampleMultiPropertiesObject.asset 文件。在 ExampleObject.asset 的检视面板 (Inspector) 窗口中,Vector3 Value 会更改为输入的数字。

其他资源

运行时数据绑定示例
使用类型转换器创建运行时绑定