Настройка настраиваемого имени управления и видимости в UI Builder
Используйте атрибут UxmlElement, чтобы изменить отображение пользовательских элементов управления в UXML и в библиотеке UI Builder.
Настроить UXML имя тега
По умолчанию имя тега в UXML для вашего пользовательского элемента управления совпадает с именем класса C#. Использовать другое имя тега не рекомендуется, но при необходимости его можно изменить.
Чтобы настроить имя тега UXML, добавьте аргумент name к атрибуту UxmlElement.
Примечание: Имя метки должно быть уникальным, и вы должны ссылаться на пространство имен классов в UXML.
Например, если создана следующая пользовательская кнопка:
using UnityEngine.UIElements;
namespace MyNamespace
{
[UxmlElement("MyButton")]
public partial class CustomButtonElement : Button
{
}
}
После этого ссылаться на свою кнопку в UXML можно по пользовательскому имени или по имени класса C#:
<ui:UXML xmlns:ui="UnityEngine.UIElements">
<MyNamespace.MyButton />
<MyNamespace.CustomButtonElement />
</ui:UXML>
Настройка пути и видимости
По умолчанию пользовательские элементы управления отображаются в UI Builder библиотеки под путем, который соответствует их C# Вы можете использовать libraryPath аргумент для настройки пути к UxmlElement атрибут.
По умолчанию пространства имен, начинающиеся с Unity, UnityEngine, или UnityEditor резервируются, поэтому элементы в этих пространствах имен не появляются в библиотеке UI Builder. Вы можете использовать visible аргумент, чтобы переопределить это и сделать свои элементы управления видимыми.
В следующем примере показано, как сделать пользовательский контроллер видимым в библиотеке 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; }
}