docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class Button

    A button triggers an action or event when pressed.

    Inheritance
    object
    CallbackEventHandler
    Focusable
    VisualElement
    BaseVisualElement
    ExVisualElement
    Button
    Implements
    IEventHandler
    IResolvedStyle
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IContextOverrideElement
    IAdditionalDataHolder
    ISizeableElement
    IPressable
    Inherited Members
    ExVisualElement.outlineColor
    ExVisualElement.backgroundColor
    ExVisualElement.passMask
    BaseVisualElement.contextPrefix
    BaseVisualElement.scaleOverride
    BaseVisualElement.themeOverride
    BaseVisualElement.langOverride
    BaseVisualElement.layoutDirectionOverride
    BaseVisualElement.preferredTooltipPlacementOverride
    BaseVisualElement.tooltipDelayMsOverride
    BaseVisualElement.GetLayoutDirectionUssClassName(Dir)
    VisualElement.disabledUssClassName
    VisualElement.SetActivePseudoState(bool)
    VisualElement.SetCheckedPseudoState(bool)
    VisualElement.Focus()
    VisualElement.SendEvent(EventBase)
    VisualElement.SetEnabledFromHierarchy(bool)
    VisualElement.SetEnabled(bool)
    VisualElement.MarkDirtyRepaint()
    VisualElement.IsMarkedForRepaint()
    VisualElement.ContainsPoint(Vector2)
    VisualElement.Overlaps(Rect)
    VisualElement.DoMeasure(float, VisualElement.MeasureMode, float, VisualElement.MeasureMode)
    VisualElement.ToString()
    VisualElement.GetClasses()
    VisualElement.ClearClassList()
    VisualElement.AddToClassList(string)
    VisualElement.RemoveFromClassList(string)
    VisualElement.ToggleInClassList(string)
    VisualElement.EnableInClassList(string, bool)
    VisualElement.ClassListContains(string)
    VisualElement.FindAncestorUserData()
    VisualElement.SetBinding(BindingId, Binding)
    VisualElement.GetBinding(BindingId)
    VisualElement.TryGetBinding(BindingId, out Binding)
    VisualElement.GetBindingInfos()
    VisualElement.GetBindingInfos(List<BindingInfo>)
    VisualElement.HasBinding(BindingId)
    VisualElement.ClearBinding(BindingId)
    VisualElement.ClearBindings()
    VisualElement.GetHierarchicalDataSourceContext()
    VisualElement.GetDataSourceContext(BindingId)
    VisualElement.TryGetDataSourceContext(BindingId, out DataSourceContext)
    VisualElement.TryGetLastBindingToUIResult(in BindingId, out BindingResult)
    VisualElement.TryGetLastBindingToSourceResult(in BindingId, out BindingResult)
    VisualElement.Add(VisualElement)
    VisualElement.Insert(int, VisualElement)
    VisualElement.Remove(VisualElement)
    VisualElement.RemoveAt(int)
    VisualElement.Clear()
    VisualElement.ElementAt(int)
    VisualElement.IndexOf(VisualElement)
    VisualElement.Children()
    VisualElement.Sort(Comparison<VisualElement>)
    VisualElement.BringToFront()
    VisualElement.SendToBack()
    VisualElement.PlaceBehind(VisualElement)
    VisualElement.PlaceInFront(VisualElement)
    VisualElement.RemoveFromHierarchy()
    VisualElement.GetFirstOfType<T>()
    VisualElement.GetFirstAncestorOfType<T>()
    VisualElement.Contains(VisualElement)
    VisualElement.FindCommonAncestor(VisualElement)
    VisualElement.viewDataKey
    VisualElement.userData
    VisualElement.canGrabFocus
    VisualElement.focusController
    VisualElement.disablePlayModeTint
    VisualElement.usageHints
    VisualElement.transform
    VisualElement.scaledPixelsPerPoint
    VisualElement.layout
    VisualElement.contentRect
    VisualElement.paddingRect
    VisualElement.worldBound
    VisualElement.localBound
    VisualElement.worldTransform
    VisualElement.hasActivePseudoState
    VisualElement.hasInactivePseudoState
    VisualElement.hasHoverPseudoState
    VisualElement.hasCheckedPseudoState
    VisualElement.hasEnabledPseudoState
    VisualElement.hasDisabledPseudoState
    VisualElement.hasFocusPseudoState
    VisualElement.hasRootPseudoState
    VisualElement.pickingMode
    VisualElement.name
    VisualElement.enabledInHierarchy
    VisualElement.enabledSelf
    VisualElement.languageDirection
    VisualElement.visible
    VisualElement.generateVisualContent
    VisualElement.dataSource
    VisualElement.dataSourcePath
    VisualElement.dataSourceType
    VisualElement.experimental
    VisualElement.hierarchy
    VisualElement.cacheAsBitmap
    VisualElement.parent
    VisualElement.panel
    VisualElement.visualTreeAssetSource
    VisualElement.this[int]
    VisualElement.childCount
    VisualElement.schedule
    VisualElement.style
    VisualElement.resolvedStyle
    VisualElement.customStyle
    VisualElement.styleSheets
    VisualElement.tooltip
    Focusable.Blur()
    Focusable.focusable
    Focusable.tabIndex
    Focusable.delegatesFocus
    CallbackEventHandler.RegisterCallback<TEventType>(EventCallback<TEventType>, TrickleDown)
    CallbackEventHandler.RegisterCallbackOnce<TEventType>(EventCallback<TEventType>, TrickleDown)
    CallbackEventHandler.RegisterCallback<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType>, TUserArgsType, TrickleDown)
    CallbackEventHandler.RegisterCallbackOnce<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType>, TUserArgsType, TrickleDown)
    CallbackEventHandler.RegisterCallback<TEventType>(EventCallback<TEventType>, CallbackOptions)
    CallbackEventHandler.RegisterCallback<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType>, TUserArgsType, CallbackOptions)
    CallbackEventHandler.UnregisterCallback<TEventType>(EventCallback<TEventType>, TrickleDown)
    CallbackEventHandler.UnregisterCallback<TEventType>(EventCallback<TEventType>, CallbackOptions)
    CallbackEventHandler.UnregisterCallback<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType>, TrickleDown)
    CallbackEventHandler.UnregisterCallback<TEventType, TUserArgsType>(EventCallback<TEventType, TUserArgsType>, CallbackOptions)
    CallbackEventHandler.UnregisterAllRemovableCallbacks()
    CallbackEventHandler.HasTrickleDownHandlers()
    CallbackEventHandler.HasBubbleUpHandlers()
    CallbackEventHandler.ExecuteDefaultActionAtTarget(EventBase)
    CallbackEventHandler.HandleEventBubbleUp(EventBase)
    CallbackEventHandler.HandleEventTrickleDown(EventBase)
    CallbackEventHandler.ExecuteDefaultAction(EventBase)
    CallbackEventHandler.NotifyPropertyChanged(in BindingId)
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: Unity.AppUI.UI
    Assembly: Unity.AppUI.dll
    Syntax
    [UxmlElement]
    public class Button : ExVisualElement, IEventHandler, IResolvedStyle, ITransform, ITransitionAnimations, IExperimentalFeatures, IVisualElementScheduler, IContextOverrideElement, IAdditionalDataHolder, ISizeableElement, IPressable
    Remarks

    Buttons are interactive elements that users can click or tap to trigger actions. They serve as key interaction points in the user interface, guiding users through their journey and enabling them to accomplish tasks.

    The Button component provides several customization options including different variants, sizes, and the ability to include icons and text labels. This flexibility allows you to create buttons that match your application's design language while maintaining consistency and usability.

    Use buttons for the most important actions in your interface. For less important or secondary actions, consider using alternative components like links or menu items.

    Variants

    • Default: Standard button style for most use cases
    • Accent: Highlights the primary action in a group of buttons
    • Destructive: Indicates actions that may have destructive consequences
    Examples

    Here are some common button usage patterns: various button configurations for different use cases.

    // Basic button with title
    <Button title="Click Me" />
    

    // Primary action button <Button variant="Accent" title="Save Changes" />

    // Destructive action with warning <Button variant="Destructive" title="Delete Item" subtitle="This cannot be undone" leadingIcon="trash" />

    // Icon-only button <Button leadingIcon="settings" size="S" />

    // Quiet secondary action <Button quiet="true" title="Cancel" />

    Creating and handling buttons in C#: programming button behavior.

    // Create a new button
    var saveButton = new Button();
    saveButton.variant = ButtonVariant.Accent;
    saveButton.title = "Save Changes";
    saveButton.leadingIcon = "save";
    

    // Handle click events saveButton.clicked += () => { SaveChanges(); Debug.Log("Changes saved!"); };

    Constructors

    Button()

    Default constructor.

    Declaration
    public Button()

    Button(Action)

    Constructs a button with an Action that is triggered when the button is clicked.

    Declaration
    public Button(Action clickEvent)
    Parameters
    Type Name Description
    Action clickEvent

    The action triggered when the button is clicked.

    Remarks

    By default, a single left mouse click triggers the Action. To change the activator, modify clickable.

    Fields

    iconOnlyUssClassName

    The Button icon only variant styling class.

    Declaration
    public const string iconOnlyUssClassName = "appui-button--icon-only"
    Field Value
    Type Description
    string

    leadingContainerUssClassName

    The Button leading container styling class.

    Declaration
    public const string leadingContainerUssClassName = "appui-button__leadingcontainer"
    Field Value
    Type Description
    string

    leadingIconUssClassName

    The Button leading icon styling class.

    Declaration
    public const string leadingIconUssClassName = "appui-button__leadingicon"
    Field Value
    Type Description
    string

    quietUssClassName

    The Button quiet mode styling class.

    Declaration
    public const string quietUssClassName = "appui-button--quiet"
    Field Value
    Type Description
    string

    sizeUssClassName

    The Button size styling class.

    Declaration
    public const string sizeUssClassName = "appui-button--size-"
    Field Value
    Type Description
    string

    subtitleUssClassName

    The Button subtitle styling class.

    Declaration
    public const string subtitleUssClassName = "appui-button__subtitle"
    Field Value
    Type Description
    string

    titleContainerUssClassName

    The Button title container styling class.

    Declaration
    public const string titleContainerUssClassName = "appui-button__titlecontainer"
    Field Value
    Type Description
    string

    titleUssClassName

    The Button title styling class.

    Declaration
    public const string titleUssClassName = "appui-button__title"
    Field Value
    Type Description
    string

    trailingContainerUssClassName

    The Button trailing container styling class.

    Declaration
    public const string trailingContainerUssClassName = "appui-button__trailingcontainer"
    Field Value
    Type Description
    string

    trailingIconUssClassName

    The Button trailing icon styling class.

    Declaration
    public const string trailingIconUssClassName = "appui-button__trailingicon"
    Field Value
    Type Description
    string

    ussClassName

    The Button main styling class.

    Declaration
    public const string ussClassName = "appui-button"
    Field Value
    Type Description
    string

    variantUssClassName

    The Button variant styling class.

    Declaration
    public const string variantUssClassName = "appui-button--"
    Field Value
    Type Description
    string

    Properties

    clickable

    Clickable Manipulator for this Button.

    Declaration
    [CreateProperty]
    public Pressable clickable { get; }
    Property Value
    Type Description
    Pressable

    contentContainer

    The content container of this element.

    Declaration
    public override VisualElement contentContainer { get; }
    Property Value
    Type Description
    VisualElement
    Overrides
    ExVisualElement.contentContainer

    leadingIcon

    The Button leading icon.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public string leadingIcon { get; set; }
    Property Value
    Type Description
    string

    quiet

    The quiet state of the Button.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public bool quiet { get; set; }
    Property Value
    Type Description
    bool

    size

    The Button size.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public Size size { get; set; }
    Property Value
    Type Description
    Size

    subtitle

    The subtitle of the Button.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public string subtitle { get; set; }
    Property Value
    Type Description
    string

    title

    The title of the Button.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public string title { get; set; }
    Property Value
    Type Description
    string

    trailingIcon

    The Button trailing icon.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public string trailingIcon { get; set; }
    Property Value
    Type Description
    string

    variant

    The button variant.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    [Header("Button")]
    public ButtonVariant variant { get; set; }
    Property Value
    Type Description
    ButtonVariant

    Methods

    GetSizeUssClassName(Size)

    Declaration
    public static string GetSizeUssClassName(Size enumValue)
    Parameters
    Type Name Description
    Size enumValue
    Returns
    Type Description
    string

    GetVariantUssClassName(ButtonVariant)

    Declaration
    public static string GetVariantUssClassName(ButtonVariant enumValue)
    Parameters
    Type Name Description
    ButtonVariant enumValue
    Returns
    Type Description
    string

    Events

    clicked

    Event triggered when the Button has been clicked.

    Declaration
    public event Action clicked
    Event Type
    Type Description
    Action

    Implements

    IEventHandler
    IResolvedStyle
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IContextOverrideElement
    IAdditionalDataHolder
    ISizeableElement
    IPressable

    Extension Methods

    VisualElementExtensions.FindNavController(VisualElement)
    RegisterUpdateCallbackExtensions.RegisterUpdateCallback(VisualElement, EventCallback<UpdateEvent>)
    RegisterUpdateCallbackExtensions.UnregisterUpdateCallback(VisualElement, EventCallback<UpdateEvent>)
    VisualElementExtensions.EnableDynamicTransform(VisualElement, bool)
    VisualElementExtensions.EnablePicking(VisualElement, bool)
    VisualElementExtensions.GetChildren<T>(VisualElement, bool)
    VisualElementExtensions.GetContextProvider<T>(VisualElement)
    VisualElementExtensions.GetContextProvider<T>(VisualElement, string)
    VisualElementExtensions.GetContext<T>(VisualElement)
    VisualElementExtensions.GetContext<T>(VisualElement, string)
    VisualElementExtensions.GetExclusiveRootElement(VisualElement)
    VisualElementExtensions.GetLastAncestorOfType<T>(VisualElement)
    VisualElementExtensions.GetPreferredTooltipPlacement(VisualElement)
    VisualElementExtensions.GetSelfContext<T>(VisualElement)
    VisualElementExtensions.GetSelfContext<T>(VisualElement, string)
    VisualElementExtensions.GetTooltipContent(VisualElement)
    VisualElementExtensions.GetTooltipTemplate(VisualElement)
    VisualElementExtensions.HasAncestorOfType<T>(VisualElement, bool)
    VisualElementExtensions.HasAncestorsOfType<T>(VisualElement)
    VisualElementExtensions.IsContextProvider<T>(VisualElement)
    VisualElementExtensions.IsContextProvider<T>(VisualElement, string)
    VisualElementExtensions.IsInvisible(VisualElement)
    VisualElementExtensions.IsOnScreen(VisualElement)
    VisualElementExtensions.ProvideContext<T>(VisualElement, string, T)
    VisualElementExtensions.ProvideContext<T>(VisualElement, T)
    VisualElementExtensions.RegisterContextChangedCallback<T>(VisualElement, string, EventCallback<ContextChangedEvent<T>>)
    VisualElementExtensions.RegisterContextChangedCallback<T>(VisualElement, EventCallback<ContextChangedEvent<T>>)
    VisualElementExtensions.SetPreferredTooltipPlacement(VisualElement, OptionalEnum<PopoverPlacement>)
    VisualElementExtensions.SetTooltipContent(VisualElement, VisualElementExtensions.TooltipContentCallback)
    VisualElementExtensions.SetTooltipTemplate(VisualElement, VisualElement)
    VisualElementExtensions.UnregisterContextChangedCallback<T>(VisualElement, string, EventCallback<ContextChangedEvent<T>>)
    VisualElementExtensions.UnregisterContextChangedCallback<T>(VisualElement, EventCallback<ContextChangedEvent<T>>)
    In This Article
    Back to top
    Copyright © 2026 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)