Bind to multiple properties with runtime binding
Learn how to bind to multiple properties from an example.
읽는 시간 4분최근 업데이트: 한 달 전
Version: 6000.0+
This example demonstrates how to bind multiple properties of a data source asset to a UI control in UI Builder.
Example overview
This example creates a data source asset that contains a property and a property. The property is a read-only property that returns the sum of the , , and values of the property. The example binds the property to a and the property to a . When you change the property in the UI, displays the sum of the , , and values of the property.
Vector3floatfloatxyzVector3Vector3Vector3FieldfloatFloatFieldVector3FloatFieldxyzVector3This example also demonstrates how to use the To Source binding mode to update the data source when the UI changes.

UI Builder preview mode
You can find the completed files that this example creates in this GitHub repository.
Prerequisites
This guide is for developers familiar with the Unity Editor, UI Toolkit, and C# scripting. Before you start, get familiar with the following:
Create a data source asset
Create a data source asset that contains the properties you want to bind to.
- Create a project in Unity with any template.
- In the folder of your project, create a C# script named
Assetswith the following content:ExampleMultiPropertiesObject.cs
using Unity.Properties;using UnityEngine;using UnityEngine.UIElements;#if UNITY_EDITORusing 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;}
Create the example object asset
- Select Assets > Create > Example MultiProperties Object. This creates a data source asset in the folder of your project.
Assets - Rename the asset as .
ExampleMultiPropertiesObject.asset
Create the UI
Create a UI that binds to the data source asset you created in the previous step. In this example, you create a UXML file that contains a VisualElement with a Vector3Field and a FloatField as its child elements.
- In the folder of your project, create a UXML file named
Assets.ExampleMultiPropertiesObject.uxml - Double-click the file to open it in UI Builder.
ExampleMultiPropertiesObject.uxml - In the Hierarchy panel, add a VisualElement.
- Add a Vector3Field and a FloatField as the child elements of the VisualElement.
Bind the Vector3Field to the data source
Bind the UI to the data source asset you created in the previous step.
-
In thepanel of the VisualElement, from the Bindings > Data Source > Object list, select ExampleMultiPropertiesObject.Inspector
?
-
In the Inspector panel of the Vector3Field, right-click the Value property and select Add binding.
-
In the Add Binding window, select vector3Value from the Data Source Path list.
-
From the Binding Mode list, select To Source. This updates the data source when UI changes.

Set the VisualElement binding data source
-
Select Add binding to apply your changes.
Bind the FloatField to the data source
Bind the property of the FloatField to the property of the data source asset.
valuesumOfVector3Properties- In the Inspector panel of the Float, right-click the Value property and select Add binding.
- In the Add Binding window, from the Data Source Path list, select sumOfVector3Properties.
- From the Binding Mode list, select To Target. This updates the UI when the data source changes.
- Select Add binding to apply your changes.
- Save and close UI Builder. Your file looks like the following:
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>
Test the binding in UI Builder preview mode
To test the binding in the UI Builder, update the value of the Vector3 property. If the binding is set up correctly, the values replicate in the data source asset.
- In the UI Builder Viewport, select Preview.
- Enter random numbers in the X, Y, and Z fields of the Vector3Field. The FloatField displays the sum of the numbers you entered.
- In the folder of your project, select the
Assetsfile. The Vector3 Value in the Inspector window of theExampleMultiPropertiesObject.assetchanges to the numbers you entered.ExampleObject.asset
- If you can't enter numbers in the Vector3Field, make the field wider by dragging the right edge of the canvas.
- To troubleshoot binding issues, enable runtime data binding logging.