版本: Unity 6 (6000.0)
语言 : 英语
运行时数据绑定示例
使用类型转换器创建运行时绑定

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

版本: 6000.0+

此示例演示如何将数据源资源的多个属性绑定到 UI Builder 中的 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 词汇表
控件。

示例概述

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

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

UI Builder preview mode
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,该 UI 绑定到您在上一步中创建的数据源资源。在此示例中,您将创建一个包含 VisualElement 的 UXML 文件,该元素的子元素是 Vector3Field 和 FloatField。

  1. 在项目的 Assets 文件夹中,创建一个名为 ExampleMultiPropertiesObject.uxml 的 UXML 文件。
  2. 双击 ExampleObject.uxml 文件,在 UI Builder 中打开它。
  3. Hierarchy 面板中,添加一个 VisualElement
  4. 添加一个 Vector3Field 和一个 FloatField 作为 VisualElement 的子元素。

将 Vector3Field 绑定到数据源

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

  1. VisualElementInspector 面板中,从 Bindings > Data Source > Object 列表中选择 ExampleMultiPropertiesObject

  2. Inspector一个 Unity 窗口,显示有关当前选定游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
    参见 词汇表
    面板的 Vector3Field 中,右键单击 Value 属性,然后选择 Add binding

  3. Add Binding 窗口中,从 Data Source Path 列表中选择 vector3Value

  4. Binding Mode 列表中选择 To Source。这将在 UI 更改时更新数据源。

    Set the VisualElement binding data source

  5. 选择 Add binding 以应用您的更改。

将 FloatField 绑定到数据源

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

  1. FloatInspector 面板中,右键单击 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:Vector3IntField label="Vector3Int">
            <Bindings>
                <engine:DataBinding property="value" data-source-path="vector3Value" binding-mode="ToSource" />
            </Bindings>
        </engine:Vector3IntField>
        <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 Viewport用户在屏幕上看到应用程序的可见区域。
    参见 词汇表
    中,选择 Preview
  2. Vector3FieldXYZ 字段中输入随机数。FloatField 将显示您输入的数字之和。
  3. 在项目的 Assets 文件夹中,选择 ExampleMultiPropertiesObject.asset 文件。ExampleObject.asset 的 Inspector 窗口中的 Vector3 Value 将更改为您输入的数字。

其他资源

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