版本: 6000.0+
此示例演示如何将数据源资源的多个属性绑定到 UI Builder 中的 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 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,该 UI 绑定到您在上一步中创建的数据源资源。在此示例中,您将创建一个包含 VisualElement 的 UXML 文件,该元素的子元素是 Vector3Field 和 FloatField。
Assets
文件夹中,创建一个名为 ExampleMultiPropertiesObject.uxml
的 UXML 文件。ExampleObject.uxml
文件,在 UI Builder 中打开它。将 UI 绑定到您在上一步中创建的数据源资源。
在 VisualElement 的 Inspector 面板中,从 Bindings > Data Source > Object 列表中选择 ExampleMultiPropertiesObject。
在 Inspector一个 Unity 窗口,显示有关当前选定游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
参见 词汇表 面板的 Vector3Field 中,右键单击 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: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 中测试绑定,请更新 Vector3 属性的值。如果绑定设置正确,则值会在数据源资源中复制。
Assets
文件夹中,选择 ExampleMultiPropertiesObject.asset
文件。ExampleObject.asset
的 Inspector 窗口中的 Vector3 Value 将更改为您输入的数字。