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

通过运行时绑定与多个属性结合

版本 :6000.0+

此示例演示了如何将数据源资产的多个属性绑定到一个 UI 在UI构建器中控制。

示例概述

此示例创建一个数据源资产,其中包含一个Vector3财产和float财产。这float属性是仅阅读属性,返回xyz值的值Vector3财产。该示例绑定了Vector3属性Vector3Fieldfloat属性FloatField。当您更改Vector3UI中的属性,FloatField显示xyz值的值Vector3财产。

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

UI Builder previewmode
UI Builder previewmode

UI Builder预览模式

您可以找到此示例在此创建的已完成的文件GitHub存储库

先决条件

本指南适用于熟悉UNITY编辑器,UI Toolkit和C#脚本的开发人员。在开始之前,请熟悉以下内容:

创建数据源资产

创建一个数据源资产,其中包含您要绑定到的属性。

  1. 在 Unity 中使用任何模板创建项目。
  2. Assets项目的文件夹,创建一个 C# 脚本ExampleMultiPropertiesObject.cs具有以下内容:
    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绑定到您在上一步中创建的数据源资产。在此示例中,您可以创建一个UXML文件,其中包含带有Vector3field的VisualEllement和floatfield作为其子元素。

  1. Assets项目的文件夹,创建一个名为uxml文件ExampleMultiPropertiesObject.uxml
  2. 双击ExampleMultiPropertiesObject.uxml文件以在UI构建器中打开。
  3. Hierarchy 面板,添加一个VisualElement
  4. 添加vector3fieldFloatField 作为VisualElement的子元素 。

将vector3field绑定到数据源

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

  1. VisualElement监视器 面板中,来自 Bindings > Data Source > Object 列表,选择extplemultipropertiesObject
  2. vector3field监视器面板中,右键单击 Value 属性并选择 Add binding(添加绑定)。
  3. Add binding 窗口,从 Data Source Path 列表中选择 vector3Value
  4. Binding Mode 列表中,选择 To Source。这会在 UI 更改时更新数据源。 Set the VisualElement binding datasource
  5. 选择 Add binding 应用您的更改。

将Floatfield绑定到数据源

绑定valueFloatfield的财产sumOfVector3Properties数据源资产的属性。

  1. FloatInspector 面板中,右键单击 Value 属性,然后选择 Add binding (添加绑定)。
  2. Add Binding 窗口中,从 Data Source Path 列表中选择 sumOfVector3Properties
  3. Binding Mode 列表中,选择 To Target。这会在数据源更改时更新 UI。
  4. 选择 Add binding (添加绑定) 以应用更改。
  5. 保存并关闭UI构建器。你的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构建器预览模式下测试绑定

要测试UI构建器中的绑定,请更新Vector3属性的值。如果正确设置绑定,则值将在数据源资产中复制。

  1. 在UI构建器中 Viewport ,选择预览
  2. vector3fieldxyz 字段输入随机数。这FloatField 显示您输入的数字的总和。
  3. Assets您项目的文件夹,选择ExampleMultiPropertiesObject.asset文件。这 Vector3Field 在检查员窗口ExampleObject.asset更改您输入的数字。

注意 :如果您无法在vector3field ,通过拖动画布的右边缘使场更宽。

其他资源

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