Создание пользовательского контроля с двумя атрибутами
Версия: 2023.2+
В этом примере показано, как создать простой пользовательский контроллер с двумя атрибутами.
Примерный обзор
В этом примере создается пользовательский контроллер под названием MyElement с двумя атрибутами, и он выставляется для UXML и UI Builder. В этом примере также показано, как добавить пользовательский контроллер к UI в UI Builder.
Вы можете найти завершенные файлы, созданные этим примером, в хранилище GitHub.
Предварительные условия
Это руководство предназначено для разработчиков, которые знакомы со скриптами Unity, UI Toolkit и C#. Перед началом работы ознакомьтесь со следующим:
Создание примера
Чтобы создать в C# новый класс пользовательского элемента управления, унаследуйте его от VisualElement класс. Это позволяет создавать и использовать элемент в C#, но не делает его автоматически доступным в UXML и UI Builder. Чтобы сделать его доступным, добавьте UxmlElement атрибут. Чтобы раскрыть атрибуты, добавьте UxmlAttribute атрибут для каждого свойства, которое вы хотите видеть в UXML и UI Builder.
- Создайте проект Unity с любым шаблоном.
- В папке
Assetsсоздайте скрипт C# с именемMyElement.csсо следующим содержанием:
using UnityEngine;
using UnityEngine.UIElements;
[UxmlElement]
partial class MyElement : VisualElement
{
string _myString = "default_value";
int _myInt = 2;
[UxmlAttribute]
public string myString
{
get => _myString;
set
{
_myString = value;
Debug.Log($"myString set to: {_myString}");
// React here, e.g. update UI
}
}
[UxmlAttribute]
public int myInt
{
get => _myInt;
set
{
_myInt = value;
Debug.Log($"myInt set to: {_myInt}");
// React here, e.g. update UI
}
}
}
Создайте UXML, чтобы увидеть атрибут
- Создайте файл UXML с любым именем, которое вы хотите.
- Дважды щелкните файл UXML, чтобы открыть его в UI Builder.
- В разделе Библиотека UI Builder выберите Project > Пользовательские элементы управления (C#) > MyElement.
- Перетащите MyElement в окно Hierarchy.
- Чтобы увидеть пользовательские атрибуты для MyElement, перейдите на вкладку Inspector в MyElement: