Определение атрибутов UXML для встроенных типов
Чтобы определить атрибуты UXML для настраиваемого контроля, добавьте атрибуты UxmlAttribute к свойствам, которые требуется раскрыть в UXML и UI Builder.
UxmlAttribute связывает поля или свойства с UXML атрибуты. Unity автоматически обрабатывает преобразование значений в и из UXML строки атрибутов по мере необходимости. Unity обеспечивает набор встроенные преобразователи для общих типов, таких как int, float, bool, string, и Vector2.
По умолчанию UI Toolkit преобразует имена атрибутов C# в camel case или Pascal case в строчные слова, соединённые дефисами. Например, свойство с именем MyFloat или myFloat в C# становится my-float в UXML и UI Builder. Вы также можете настроить имена атрибутов UXML.
В следующем примере создается пользовательский контроллер с несколькими пользовательскими атрибутами:
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
[UxmlElement]
public partial class ExampleVisualElement : VisualElement
{
[UxmlAttribute]
public string myStringValue { get; set; }
[UxmlAttribute]
public int myIntValue { get; set; }
[UxmlAttribute]
public float myFloatValue { get; set; }
[UxmlAttribute]
public List<int> myListOfInts { get; set; }
[UxmlAttribute, UxmlTypeReference(typeof(VisualElement))]
public Type myType { get; set; }
[UxmlAttribute]
public Texture2D myTexture { get; set; }
[UxmlAttribute]
public Color myColor { get; set; }
}
В следующем примере документа UXML используется пользовательский элемент управления:
<ui:UXML xmlns:ui="UnityEngine.UIElements">
<ExampleElement my-string-value="Hello World" my-int-value="123" />
<ExampleElement my-float-value="3.14" my-list-of-ints="1,2,3" />
<ExampleElement my-string-value="Hello World" my-int-value="123" />
<ExampleElement my-texture="project://database/Assets/MyTexture.png" />
<ExampleElement my-color="#FF0000FF" />
<ExampleElement my-type="UnityEngine.UIElements.Button, UnityEngine.UIElementsModule" />
</ui:UXML>