Version: Unity 6.5 Alpha (6000.5)
Language : English
Create a custom control
Define UXML attributes for built-in types

Configure the custom control name and visibility in UI Builder

Use the UxmlElement attribute to change how your custom controls appear in UXML and in the UI Builder library.

Customize UXML tag name

By default, the tag name in UXML for your custom control is the C# class name. While it’s not recommended to use a different tag name, you can customize it if needed.

To customize a UXML tag name, add a name argument to the UxmlElement attribute.

Note: The tag name must be unique and you must reference the classes’ namespace in UXML.

For example, if you create the following custom button:

using UnityEngine.UIElements;

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

You can then reference the custom button in UXML with the custom name or the C# class name:

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

Configure path and visibility

By default, custom controls appear in the UI Builder library under a path that matches their C# namespace. You can use the libraryPath argument to customize the path of the UxmlElement attribute.

By default, namespaces that start with Unity, UnityEngine, or UnityEditor are reserved, so elements in these namespaces don’t appear in the UI Builder library. You can use the visible argument to override this and make your controls visible.

The following example shows how to make a custom control visible in the UI Builder library under a custom path, and how to hide another custom control:

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; }
}

Additional resources

Create a custom control
Define UXML attributes for built-in types
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961