Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

UxmlElementAttribute

класс в UnityEngine.UIElements

Выполнено в:UnityEngine.UIElementsModule

Описание

Объявляет пользовательский контроллер.

Чтобы создать пользовательский элемент управления, добавьте к определению его класса атрибут UxmlElement. Класс нужно объявить частичным и унаследовать от VisualElement Когда элемент помечен атрибутом UxmlElement, соответствующий класс может быть создан для каждого элемента. UxmlSerializedData класс формируется в частичном классе. Этот класс данных содержит SerializeField для каждого поля или свойства, которое было помечено UxmlAttributeAttribute атрибут. Эти серийизованные данные позволяют элементу быть серийизованным из UXML и поддерживают редактирование в поле Атрибуты окна Inspector в UI Builder. UxmlSerializedData включает в себя генерируемое UxmlSerializedData.CreateInstance метод, который использует конструктор по умолчанию. Вы можете использовать UxmlCreateInstanceMethodAttribute для замены поведения по умолчанию и предоставления собственного метода создания. По умолчанию пользовательский контроллер появляется на вкладке Библиотека в UI Builder. visibility поле может быть использовано для управления видимостью пользовательского контроля на вкладке Библиотека.

Для примера миграции пользовательского контроля из UxmlFactory и UxmlTraits к Генеральной Ассамблее UxmlElement и UxmlAttributes система, см. Расширенное создание пользовательских контроля с 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>

Когда вы создаёте пользовательский элемент управления, по умолчанию в UXML и UI Builder используется имя типа элемента (имя класса C#). Однако имя можно изменить, чтобы на элемент было удобнее ссылаться.

Примечание: Вы все еще должны ссылаться на пространство имен классов в UXML. Чтобы создать пользовательское имя для элемента, укажите значение в name свойства.
Например, если создана следующая пользовательская кнопка:

using UnityEngine.UIElements;

namespace MyNamespace { [UxmlElement("MyButton")] public partial class CustomButtonElement : Button { } }

Затем вы можете сослаться на пользовательскую кнопку в UXML с пользовательским именем или типом:

<ui:UXML xmlns:ui="UnityEngine.UIElements">
    <MyNamespace.MyButton />
    <MyNamespace.CustomButtonElement />
</ui:UXML>

Некоторые пространства имён Unity, а именно начинающиеся с Unity, UnityEngine и UnityEditor, зарезервированы. Поэтому элементы из этих пространств имён по умолчанию скрыты в библиотеке UI Builder. Однако это поведение можно переопределить, явно настроив видимость таких элементов:

using UnityEngine.UIElements;

namespace Unity.MyGame { // This element is visible in the UI Builder library under "My Game/Inventory". [UxmlElement(libraryPath = "My Game/Inventory", visibility = LibraryVisibility.Visible)] public partial class VisibleItem : VisualElement { [UxmlAttribute] public string description { get; set; } } }

// This element is hidden from the UI Builder library. // However, you can still use it in UXML or C# code. [UxmlElement(visibility = LibraryVisibility.Hidden)] public partial class HiddenItem : VisualElement { [UxmlAttribute] public string description { get; set; } }

Свойства

Свойство Описание
libraryPathНастраиваемый путь, используемый при отображении элемента в библиотеке UI Builder. Подпути могут быть созданы с помощью косынки (/). Если значение не указано, будет использовано пространство имен элемента.
nameПредоставляет пользовательское имя элемента.
visibilityКонтролирует видимость элемента в библиотеке UI Builder.

Конструкторы

Конструктор Описание
UxmlElementAttributeОткрывает тип VisualElement для UXML и UI Builder