docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class Dropdown

    A form control that lets users select a value from a list of options.

    Inheritance
    object
    CallbackEventHandler
    Focusable
    VisualElement
    BaseVisualElement
    ExVisualElement
    Picker
    Picker<DropdownItem, DropdownItem>
    Dropdown
    EnumField
    MaskField
    Implements
    IEventHandler
    IResolvedStyle
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IContextOverrideElement
    IAdditionalDataHolder
    IInputElement<IEnumerable<int>>
    IValidatableElement<IEnumerable<int>>
    INotifyValueChanged<IEnumerable<int>>
    ISizeableElement
    IPressable
    Inherited Members
    Picker<DropdownItem, DropdownItem>.makeItem
    Picker<DropdownItem, DropdownItem>.bindItem
    Picker<DropdownItem, DropdownItem>.unbindItem
    Picker<DropdownItem, DropdownItem>.makeTitle
    Picker<DropdownItem, DropdownItem>.bindTitle
    Picker<DropdownItem, DropdownItem>.RefreshTitleUI()
    Picker<DropdownItem, DropdownItem>.OnRequestItemCreation(int)
    Picker<DropdownItem, DropdownItem>.OnUnbindItem(VisualElement, int)
    Picker<DropdownItem, DropdownItem>.GetPickerItem(int)
    Picker.titleContainerUssClassName
    Picker.titleUssClassName
    Picker.trailingContainerUssClassName
    Picker.caretUssClassName
    Picker.sizeUssClassName
    Picker.emphasizedUssClassName
    Picker.appuiPickerMenu
    Picker.m_Items
    Picker.m_Value
    Picker.m_TitleContainer
    Picker.closeOnSelection
    Picker.clickable
    Picker.defaultMessage
    Picker.defaultValue
    Picker.sourceItems
    Picker.size
    Picker.emphasized
    Picker.selectionType
    Picker.selectedIndex
    Picker.invalid
    Picker.validateValue
    Picker.SetValueWithoutNotify(IEnumerable<int>)
    Picker.value
    Picker.Refresh()
    Picker.RefreshUI()
    Picker.RefreshListUI()
    Picker.RefreshTitleUI()
    Picker.OnRequestItemCreation(int)
    Picker.OnPickerItemsCreated()
    Picker.OnValueSet()
    Picker.OnPickerItemRemoved(PickerItem, int)
    Picker.OnUnbindItem(VisualElement, int)
    Picker.GetSizeUssClassName(Size)
    ExVisualElement.contentContainer
    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 Dropdown : Picker<DropdownItem, DropdownItem>, IEventHandler, IResolvedStyle, ITransform, ITransitionAnimations, IExperimentalFeatures, IVisualElementScheduler, IContextOverrideElement, IAdditionalDataHolder, IInputElement<IEnumerable<int>>, IValidatableElement<IEnumerable<int>>, INotifyValueChanged<IEnumerable<int>>, ISizeableElement, IPressable
    Remarks

    The Dropdown component presents a list of options that users can choose from. It appears as a button that, when clicked, shows a list of selectable options in a popup menu.

    Dropdowns are useful when you need to provide users with a set of predefined options while conserving screen space. They're commonly used in forms, settings panels, and configuration interfaces.

    The component supports both single and multiple selection modes, making it versatile for different use cases.

    For the best user experience, consider the following guidelines:

    • Use Dropdown when you have 3-10 options. For fewer options, consider using Radio Buttons or Toggle Buttons. For more options, consider using a searchable ComboBox.
    • Order the options in a logical way (e.g., alphabetically, numerically, or by frequency of use)
    • Use clear, concise labels for options
    Examples

    Basic Dropdown: Creating a simple dropdown with string options

    // Create a basic dropdown with string items
    var dropdown = new Dropdown();
    var items = new List<string> { "Option 1", "Option 2", "Option 3" };
    dropdown.sourceItems = items;
    

    // Add it to your UI root.Add(dropdown);

    Multiple Selection Dropdown: Creating a multiple selection dropdown with custom handling of selection changes

    var dropdown = new Dropdown {
        selectionType = PickerSelectionType.Multiple,
        closeOnSelection = false,
        defaultMessage = "Select options"
    };
    

    var items = new List<string> { "Red", "Green", "Blue" }; dropdown.sourceItems = items;

    // Handle selection changes dropdown.RegisterValueChangedCallback(evt => { var selectedIndices = evt.newValue; Debug.Log($"Selected {selectedIndices.Count()} items"); });

    Custom Item Binding: Creating a dropdown with custom item binding and display

    var dropdown = new Dropdown();
    

    // Custom class for items class ColorOption { public string Name { get; set; } public Color Color { get; set; } }

    var items = new List<ColorOption> { new ColorOption { Name = "Red", Color = Color.red }, new ColorOption { Name = "Green", Color = Color.green } };

    dropdown.sourceItems = items; dropdown.bindItem = (item, index) => { var colorOption = items[index] as ColorOption; item.label = colorOption.Name; };

    dropdown.bindTitle = (item, indices) => { if (indices.Count() == 0) item.label = "Select a color"; else item.label = (items[indices.First()] as ColorOption).Name; };

    Constructors

    Dropdown()

    Default constructor.

    Declaration
    public Dropdown()

    Dropdown(IList, BindItemFunc, BindTitleFunc, int[])

    Construct a Dropdown UI element with a provided dynamic collection of items.

    Declaration
    public Dropdown(IList items, Picker<DropdownItem, DropdownItem>.BindItemFunc bindItemFunc = null, Picker<DropdownItem, DropdownItem>.BindTitleFunc bindTitleFunc = null, int[] defaultIndices = null)
    Parameters
    Type Name Description
    IList items

    An items collection.

    Picker<DropdownItem, DropdownItem>.BindItemFunc bindItemFunc

    The binding function used to populate display data for each item.

    Picker<DropdownItem, DropdownItem>.BindTitleFunc bindTitleFunc

    The binding function used to populate display data for the title.

    int[] defaultIndices

    The selected index by default.

    Fields

    ussClassName

    The Dropdown main styling class.

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

    Properties

    bindTitle

    A method that will be called to bind the title.

    Declaration
    [CreateProperty]
    public Picker<DropdownItem, DropdownItem>.BindTitleFunc bindTitle { get; set; }
    Property Value
    Type Description
    Picker<DropdownItem, DropdownItem>.BindTitleFunc

    Methods

    ApplyMultiSelectionMessage(LocalizedTextElement, int)

    Apply the Picker localized multi selection message.

    Declaration
    protected virtual void ApplyMultiSelectionMessage(LocalizedTextElement element, int selectionCount)
    Parameters
    Type Name Description
    LocalizedTextElement element

    The LocalizedTextElement to apply the message to.

    int selectionCount

    The number of selected items.

    MakeItem()

    Default delegate to create a new DropdownItem for any item.

    Declaration
    protected static DropdownItem MakeItem()
    Returns
    Type Description
    DropdownItem

    A new DropdownItem.

    MakeTitle()

    Default delegate to create a new DropdownItem for the title.

    Declaration
    protected static DropdownItem MakeTitle()
    Returns
    Type Description
    DropdownItem

    A new DropdownItem.

    Implements

    IEventHandler
    IResolvedStyle
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IContextOverrideElement
    IAdditionalDataHolder
    IInputElement<TValue>
    IValidatableElement<TValue>
    INotifyValueChanged<T>
    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)