版本 :6000.0+
此示例演示了如何将数据源资产的多个属性绑定到一个 UI 在UI构建器中控制。
此示例创建一个数据源资产,其中包含一个Vector3
财产和float
财产。这float
属性是仅阅读属性,返回x
、y
和z
值的值Vector3
财产。该示例绑定了Vector3
属性Vector3Field
和float
属性FloatField
。当您更改Vector3
UI中的属性,FloatField
显示x
、y
和z
值的值Vector3
财产。
此示例还演示了如何使用源绑定模式在UI更改时更新数据源。
UI Builder预览模式
您可以找到此示例在此创建的已完成的文件GitHub存储库。
本指南适用于熟悉UNITY编辑器,UI Toolkit和C#脚本的开发人员。在开始之前,请熟悉以下内容:
创建一个数据源资产,其中包含您要绑定到的属性。
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;
}
Assets
您项目的文件夹。ExampleMultiPropertiesObject.asset
。创建一个UI,该UI绑定到您在上一步中创建的数据源资产。在此示例中,您可以创建一个UXML文件,其中包含带有Vector3field的VisualEllement和floatfield作为其子元素。
Assets
项目的文件夹,创建一个名为uxml文件ExampleMultiPropertiesObject.uxml
。ExampleMultiPropertiesObject.uxml
文件以在UI构建器中打开。将UI绑定到您在上一步中创建的数据源资产。
绑定value
Floatfield的财产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: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构建器中的绑定,请更新Vector3属性的值。如果正确设置绑定,则值将在数据源资产中复制。
Assets
您项目的文件夹,选择ExampleMultiPropertiesObject.asset
文件。这 Vector3Field 在检查员窗口ExampleObject.asset
更改您输入的数字。注意 :如果您无法在vector3field ,通过拖动画布的右边缘使场更宽。