Unity 6.3
0 онлайн 101 гостей 3 в системе
Вход
UI системы Шаг 32 из 317

Определение атрибутов 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>

Дополнительные ресурсы