版本:Unity 6 (6000.0)
语言:英语
运行时数据绑定
在 C# 脚本中创建运行时绑定

运行时绑定入门

版本: 6000.0+

想要学习如何创建运行时数据绑定?使用此示例入门。此示例创建数据源资源并使用 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 术语表
Builder 将数据源绑定到 UI。

在 UI Builder 中设置运行时绑定

  1. 定义数据源 以及 UI 控件的 检查器一个 Unity 窗口,用于显示有关当前选定游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
    参见 术语表
    面板中的数据源路径。
  2. 将 UI 控件的属性绑定到数据源资源的属性。
  3. 定义 绑定模式 以配置数据源和 UI 之间如何复制更改。
  4. 定义 更新触发器 以配置何时在数据源和 UI 之间复制更改。

示例概述

此示例创建包含字符串属性的数据源资源,并将其绑定到 UI Builder 中 Label 控件的 Text 属性。当您更改数据源资源中的字符串属性时,标签的文本会发生变化。

Runtime binding example
运行时绑定示例

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

先决条件

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

创建数据源资源

创建包含要绑定到的属性的数据源资源。在本例中,您将创建一个名为 ExampleObjectScriptableObject 资源,其中包含一个 string 属性。

  1. 在 Unity 中使用任何模板创建一个项目。
  2. 在项目的 Assets 文件夹中,创建一个名为 ExampleObject.cs 的 C# 脚本,内容如下
using Unity.Properties;
using UnityEngine;
using UnityEngine.UIElements;

#if UNITY_EDITOR
using UnityEditor;
#endif

[CreateAssetMenu]
public class ExampleObject : ScriptableObject
{
    [Header("Simple binding")]
    public string simpleLabel = "Hello World!";
}

创建示例对象资源

  1. 从菜单中,选择 Assets > Create > Example Object。这将在项目的 Assets 文件夹中创建一个资源。
  2. 将资源重命名为 ExampleObject.asset

创建 UI

创建一个 UI,它绑定到您在上一步中创建的数据源资源。在本例中,您将创建一个包含 Label 的 UXML 文件。

  1. 在项目的 Assets 文件夹中,创建一个名为 ExampleObject.uxml 的 UXML 文件。
  2. 双击 ExampleObject.uxml 文件以在 UI Builder 中打开它。
  3. 在 Hierarchy 面板中,添加一个 Label 控件。

将 Label 绑定到数据源

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

  1. Label 的 Inspector 面板中,从 Bindings > Data Source > Object 列表中选择 ExampleObject

  2. Data Source Path 列表中,选择 simpleLabel

    Set the VisualElement binding data source

  3. 右键单击 Text 属性并选择 Add binding

    Add binding

  4. Binding Mode 列表中选择 To Target。当数据源发生变化时,这将更新 UI。

  5. Advanced Settings > Update Trigger 列表中选择 On Source Changed,这是默认设置。当数据源发生变化时,这将更新 UI。

    Set the binding mode and update trigger

  6. 选择 Add binding 以应用更改。

  7. 保存并关闭 UI Builder。您的 ExampleObject.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:Label text="Label" data-source="ExampleObject.asset" data-source-path="simpleLabel">
        <Bindings>
            <engine:DataBinding property="text" binding-mode="ToTarget" />
        </Bindings>
    </engine:Label>
</engine:UXML>

在 UI Builder 预览模式下测试绑定

更新数据源资源中的 LabelText 的标签文本,并检查 UI 中复制的更改。

  1. 在项目的 Assets 文件夹中,选择 ExampleObject.asset
  2. 在 Inspector 窗口中,在 Simple Label 字段中,输入随机文本。UI Builder 视口用户在屏幕上看到应用程序的区域。
    参见 术语表
    中的 Label 文本将更改为输入的文本。

其他资源

运行时数据绑定
在 C# 脚本中创建运行时绑定