docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class AvatarGroup

    Groups multiple avatars together in a horizontal layout with configurable spacing and overflow handling.

    Inheritance
    object
    CallbackEventHandler
    Focusable
    VisualElement
    BaseVisualElement
    AvatarGroup
    Implements
    IEventHandler
    IResolvedStyle
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IContextOverrideElement
    IAdditionalDataHolder
    Inherited Members
    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 AvatarGroup : BaseVisualElement, IEventHandler, IResolvedStyle, ITransform, ITransitionAnimations, IExperimentalFeatures, IVisualElementScheduler, IContextOverrideElement, IAdditionalDataHolder
    Remarks

    The AvatarGroup component is used to group multiple Avatar components together. It's particularly useful for displaying a list of users, team members, or any collection of entities represented by avatars.

    The component automatically handles overflow by showing a configurable number of avatars and collapsing the rest into a '+N' indicator.

    Note: For optimal visual presentation, it's recommended to keep the max property value between 4 and 6 avatars.

    Examples

    Basic usage with different variants. Shows 5 circular avatars with medium spacing and '+1' overflow indicator.

    <AvatarGroup spacing="M" max="5" variant="Circular">
        <Avatar src="user1.png" />
        <Avatar src="user2.png" />
        <Avatar src="user3.png" />
        <Avatar src="user4.png" />
        <Avatar src="user5.png" />
        <Avatar src="user6.png" />
    </AvatarGroup>

    Data binding example. Dynamically create avatars from a data source with custom binding logic.

    var avatarGroup = new AvatarGroup();
    avatarGroup.sourceItems = usersList;
    avatarGroup.max = 4;
    avatarGroup.spacing = AvatarGroupSpacing.S;
    avatarGroup.bindItem = (avatar, index) => {
        var user = usersList[index];
        avatar.src = user.avatarUrl;
        avatar.backgroundColor = user.color;
    };

    Custom surplus rendering. Customize the appearance of the overflow indicator.

    avatarGroup.renderSurplus = (surplusCount) => {
        var surplusAvatar = new Avatar();
        surplusAvatar.backgroundColor = new Color(0.2f, 0.2f, 0.2f);
        var label = new Text($"+{surplusCount} more");
        label.style.color = Color.white;
        surplusAvatar.Add(label);
        return surplusAvatar;
    };

    Constructors

    AvatarGroup()

    Defines the AvatarGroup constructor.

    Declaration
    public AvatarGroup()

    Fields

    spacingUssClassName

    The AvatarGroup spacing styling class.

    Declaration
    public const string spacingUssClassName = "appui-avatar-group--spacing-"
    Field Value
    Type Description
    string

    surplusUssClassName

    The AvatarGroup surplus styling class.

    Declaration
    public const string surplusUssClassName = "appui-avatar-group__surplus"
    Field Value
    Type Description
    string

    ussClassName

    The AvatarGroup main styling class.

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

    Properties

    bindItem

    Method used to bind an item to a child Avatar.

    Declaration
    [CreateProperty]
    public Action<Avatar, int> bindItem { get; set; }
    Property Value
    Type Description
    Action<Avatar, int>

    contentContainer

    The AvatarGroup content container.

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

    makeItem

    Method used to create an Avatar instance.

    Declaration
    [CreateProperty]
    public Func<Avatar> makeItem { get; set; }
    Property Value
    Type Description
    Func<Avatar>

    max

    The maximum number of avatars to display before the overflow.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    [Header("Avatar Group")]
    public int max { get; set; }
    Property Value
    Type Description
    int

    renderSurplus

    The custom render function for the surplus avatars.

    Declaration
    public AvatarGroup.RenderSurplusDelegate renderSurplus { get; set; }
    Property Value
    Type Description
    AvatarGroup.RenderSurplusDelegate

    size

    The size of avatars.

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

    sourceItems

    The collection of items that will be displayed as Radio component.

    Declaration
    [CreateProperty]
    public IList sourceItems { get; set; }
    Property Value
    Type Description
    IList

    spacing

    The spacing between avatars.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public AvatarGroupSpacing spacing { get; set; }
    Property Value
    Type Description
    AvatarGroupSpacing

    total

    The AvatarGroup total count.

    Declaration
    [CreateProperty(ReadOnly = true)]
    public int total { get; }
    Property Value
    Type Description
    int

    variant

    The AvatarGroup variant.

    Declaration
    [CreateProperty]
    [UxmlAttribute]
    public AvatarVariant variant { get; set; }
    Property Value
    Type Description
    AvatarVariant

    Methods

    GetDefaultSurplusElement(int)

    The default surplus VisualElement.

    Declaration
    public static VisualElement GetDefaultSurplusElement(int surplus)
    Parameters
    Type Name Description
    int surplus

    The number of surplus avatars.

    Returns
    Type Description
    VisualElement

    The default surplus VisualElement.

    GetSpacingUssClassName(AvatarGroupSpacing)

    Declaration
    public static string GetSpacingUssClassName(AvatarGroupSpacing enumValue)
    Parameters
    Type Name Description
    AvatarGroupSpacing enumValue
    Returns
    Type Description
    string

    Refresh()

    Refresh the AvatarGroup.

    Declaration
    public void Refresh()

    SetCustomTotal(int?)

    Set a custom AvatarGroup total count instead of the child count.

    Declaration
    public void SetCustomTotal(int? customTotal)
    Parameters
    Type Name Description
    int? customTotal

    The custom total count.

    Remarks

    You can pass a null value to reset the custom total count and use the child count instead.

    Implements

    IEventHandler
    IResolvedStyle
    ITransform
    ITransitionAnimations
    IExperimentalFeatures
    IVisualElementScheduler
    IContextOverrideElement
    IAdditionalDataHolder

    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)