Привязка к нескольким свойствам с помощью привязки времени выполнения
Версия: 6000.0+
В этом примере показано, как привязать несколько свойств ассета источника данных к контроллеру UI в UI Builder.
Примерный обзор
В этом примере создается ассет источника данных, содержащий свойство Vector3 и свойство float. Свойство float является свойством только для чтения, которое возвращает сумму значений x, yи z свойства Vector3. В примере свойство Vector3 привязано к свойству Vector3Field, а свойство float к свойству FloatField. При изменении свойства Vector3 в свойстве UI, FloatField отображает сумму значений x, yи z свойства Vector3.
В этом примере также показано, как использовать режим привязки To Source для обновления источника данных при изменении пользовательского интерфейса.
Вы можете найти завершенные файлы, созданные этим примером, в хранилище GitHub.
Предварительные условия
Это руководство предназначено для разработчиков, знакомых со скриптами Unity Editor, UI Toolkit и C#. Перед началом работы ознакомьтесь со следующим:
Создание ассета источника данных
Создайте ассет источника данных, содержащий свойства, к которым требуется установить привязку.
- Создайте проект в Unity с любым шаблоном.
- В папке
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;
}
Создание примера ассета объекта
- Выберите Ассеты > Создать > Пример MultiProperties Объект. Это создает ассет источника данных в папке
Assetsвашего проекта. - Переименуйте ассет в
ExampleMultiPropertiesObject.asset.
Создать UI
Создайте файл UI, который связывается с ассетом источника данных, созданным на предыдущем шаге. В этом примере создается файл UXML, содержащий файл VisualElement с дочерними элементами Vector3Field и FloatField.
- В папке
Assetsпроекта создайте файл UXML с именемExampleMultiPropertiesObject.uxml. - Дважды щелкните файл
ExampleMultiPropertiesObject.uxml, чтобы открыть его в UI Builder. - В панели Hierarchy добавьте VisualElement.
- Добавить Vector3Field и FloatField в качестве дочерних элементов VisualElement.
Привязать Vector3Field к источнику данных
Привязать UI к ассету источника данных, созданному на предыдущем шаге.
В панели Inspector панели VisualElementиз списка Привязки > Источник данных > Объект выберите ExampleMultiPropertiesObject.
В течение Inspector группы экспертов Vector3Field, щелкните правой кнопкой Стоимость свойство и выбрать Добавить привязку.
В течение Добавить привязку окно, выбрать vector3Value от Путь к источнику данных лист.
-
Из Режим привязки список, выбор ИсточникЭто обновляет источник данных, когда UI изменения.

Выберите Добавить привязку, чтобы применить изменения.
Привязать FloatField к источнику данных
Привязать свойство value объекта FloatField к свойству sumOfVector3Properties объекта источника данных.
- В течение Inspector группы экспертов Поплавок, щелкните правой кнопкой Стоимость свойство и выбрать Добавить привязку.
- В течение Добавить привязку окно, из Путь к источнику данных список, выбор sumOfVector3Properties.
- Из Режим привязки список, выбор На цель. Это обновляет UI при изменении источника данных.
- Выберите Добавить привязку, чтобы применить изменения.
- Сохраните и закройте UI Builder. Ваш файл
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 Builder
Чтобы проверить привязку в UI Builder, обновите значение свойства Vector3. Если привязка настроена правильно, значения реплицируются в ассете источника данных.
- В окне просмотра UI Builder выберите Предварительный просмотр.
- Введите произвольные числа в поля X, Y и Z элемента Vector3Field. Элемент FloatField отображает сумму введённых чисел.
- В папке
Assetsвашего проекта выберите файлExampleMultiPropertiesObject.asset. Значение Vector3 в окне InspectorExampleObject.assetизменится на числа, которые вы ввели.
Примечание:
- Если вы не можете ввести числа в Vector3Field, сделайте поле шире, перетаскивая правый край холста.
- Для устранения неполадок привязки включите журнал привязки данных времени выполнения.