docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class XRInteractionGroup

    Behaviour implementation of IXRInteractionGroup. An Interaction Group hooks into the interaction system (via XRInteractionManager) and enforces that only one IXRGroupMember within the Group can interact at a time. Each Group member must be either an IXRInteractor or an IXRInteractionGroup.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    XRInteractionGroup
    Implements
    IXRInteractionOverrideGroup
    IXRInteractionGroup
    IXRGroupMember
    Inherited Members
    MonoBehaviour.IsInvoking()
    MonoBehaviour.CancelInvoke()
    MonoBehaviour.Invoke(string, float)
    MonoBehaviour.InvokeRepeating(string, float, float)
    MonoBehaviour.CancelInvoke(string)
    MonoBehaviour.IsInvoking(string)
    MonoBehaviour.StartCoroutine(string)
    MonoBehaviour.StartCoroutine(string, object)
    MonoBehaviour.StartCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.useGUILayout
    MonoBehaviour.runInEditMode
    Behaviour.enabled
    Behaviour.isActiveAndEnabled
    Component.GetComponent(Type)
    Component.GetComponent<T>()
    Component.TryGetComponent(Type, out Component)
    Component.TryGetComponent<T>(out T)
    Component.GetComponent(string)
    Component.GetComponentInChildren(Type, bool)
    Component.GetComponentInChildren(Type)
    Component.GetComponentInChildren<T>(bool)
    Component.GetComponentInChildren<T>()
    Component.GetComponentsInChildren(Type, bool)
    Component.GetComponentsInChildren(Type)
    Component.GetComponentsInChildren<T>(bool)
    Component.GetComponentsInChildren<T>(bool, List<T>)
    Component.GetComponentsInChildren<T>()
    Component.GetComponentsInChildren<T>(List<T>)
    Component.GetComponentInParent(Type, bool)
    Component.GetComponentInParent(Type)
    Component.GetComponentInParent<T>(bool)
    Component.GetComponentInParent<T>()
    Component.GetComponentsInParent(Type, bool)
    Component.GetComponentsInParent(Type)
    Component.GetComponentsInParent<T>(bool)
    Component.GetComponentsInParent<T>(bool, List<T>)
    Component.GetComponentsInParent<T>()
    Component.GetComponents(Type)
    Component.GetComponents(Type, List<Component>)
    Component.GetComponents<T>(List<T>)
    Component.GetComponents<T>()
    Component.CompareTag(string)
    Component.SendMessageUpwards(string, object, SendMessageOptions)
    Component.SendMessageUpwards(string, object)
    Component.SendMessageUpwards(string)
    Component.SendMessageUpwards(string, SendMessageOptions)
    Component.SendMessage(string, object)
    Component.SendMessage(string)
    Component.SendMessage(string, object, SendMessageOptions)
    Component.SendMessage(string, SendMessageOptions)
    Component.BroadcastMessage(string, object, SendMessageOptions)
    Component.BroadcastMessage(string, object)
    Component.BroadcastMessage(string)
    Component.BroadcastMessage(string, SendMessageOptions)
    Component.transform
    Component.gameObject
    Component.tag
    Object.GetInstanceID()
    Object.GetHashCode()
    Object.Equals(object)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Transform)
    Object.Instantiate(Object, Transform, bool)
    Object.Instantiate<T>(T)
    Object.Instantiate<T>(T, Vector3, Quaternion)
    Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
    Object.Instantiate<T>(T, Transform)
    Object.Instantiate<T>(T, Transform, bool)
    Object.Destroy(Object, float)
    Object.Destroy(Object)
    Object.DestroyImmediate(Object, bool)
    Object.DestroyImmediate(Object)
    Object.FindObjectsOfType(Type)
    Object.FindObjectsOfType(Type, bool)
    Object.FindObjectsByType(Type, FindObjectsSortMode)
    Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode)
    Object.DontDestroyOnLoad(Object)
    Object.FindObjectsOfType<T>()
    Object.FindObjectsByType<T>(FindObjectsSortMode)
    Object.FindObjectsOfType<T>(bool)
    Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
    Object.FindObjectOfType<T>()
    Object.FindObjectOfType<T>(bool)
    Object.FindFirstObjectByType<T>()
    Object.FindAnyObjectByType<T>()
    Object.FindFirstObjectByType<T>(FindObjectsInactive)
    Object.FindAnyObjectByType<T>(FindObjectsInactive)
    Object.FindObjectOfType(Type)
    Object.FindFirstObjectByType(Type)
    Object.FindAnyObjectByType(Type)
    Object.FindObjectOfType(Type, bool)
    Object.FindFirstObjectByType(Type, FindObjectsInactive)
    Object.FindAnyObjectByType(Type, FindObjectsInactive)
    Object.ToString()
    Object.name
    Object.hideFlags
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: UnityEngine.XR.Interaction.Toolkit.Interactors
    Assembly: Unity.XR.Interaction.Toolkit.dll
    Syntax
    [MovedFrom("UnityEngine.XR.Interaction.Toolkit")]
    [DisallowMultipleComponent]
    [AddComponentMenu("XR/XR Interaction Group", 11)]
    [HelpURL("https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.2/api/UnityEngine.XR.Interaction.Toolkit.Interactors.XRInteractionGroup.html")]
    [DefaultExecutionOrder(-100)]
    public class XRInteractionGroup : MonoBehaviour, IXRInteractionOverrideGroup, IXRInteractionGroup, IXRGroupMember
    Remarks

    The member prioritized for interaction in any given frame is whichever member was interacting the previous frame if it can select in the current frame. If there is no such member, then the interacting member is whichever one in the ordered list of members interacts first.

    Properties

    activeInteractor

    The Interactor in this Interaction Group or any of its member Groups that is currently performing interaction.

    Declaration
    public IXRInteractor activeInteractor { get; }
    Property Value
    Type Description
    IXRInteractor

    containingGroup

    The Interaction Group that contains this member.

    Declaration
    public IXRInteractionGroup containingGroup { get; }
    Property Value
    Type Description
    IXRInteractionGroup

    focusInteractable

    The Interactable that is currently being focused by an Interactor in this Interaction Group or any of its member Groups.

    Declaration
    public IXRFocusInteractable focusInteractable { get; }
    Property Value
    Type Description
    IXRFocusInteractable
    See Also
    focusInteractor

    focusInteractor

    The Interactor in this Interaction Group or any of its member Groups that initiated the last focus event.

    Declaration
    public IXRInteractor focusInteractor { get; }
    Property Value
    Type Description
    IXRInteractor
    See Also
    focusInteractable
    interactionGroupsFocusing

    groupName

    The name of the interaction group, which can be used to retrieve it from the Interaction Manager.

    Declaration
    public string groupName { get; }
    Property Value
    Type Description
    string

    interactionManager

    The XRInteractionManager that this Interaction Group will communicate with (will find one if null).

    Declaration
    public XRInteractionManager interactionManager { get; set; }
    Property Value
    Type Description
    XRInteractionManager

    startingGroupMembers

    Ordered list of Interactors or Interaction Groups that are registered with the Group on Awake. All objects in this list should implement the IXRGroupMember interface and either the IXRInteractor interface or the IXRInteractionGroup interface.

    Declaration
    public List<Object> startingGroupMembers { get; set; }
    Property Value
    Type Description
    List<Object>
    Remarks

    There are separate methods to access and modify the Group members used after Awake.

    See Also
    AddGroupMember(IXRGroupMember)
    MoveGroupMemberTo(IXRGroupMember, int)
    RemoveGroupMember(IXRGroupMember)
    ClearGroupMembers()
    ContainsGroupMember(IXRGroupMember)
    GetGroupMembers(List<IXRGroupMember>)

    Methods

    AddGroupMember(IXRGroupMember)

    Adds the given Group member to the end of the ordered list of members in the Group. Causes no change if the Group member is already added.

    Declaration
    public void AddGroupMember(IXRGroupMember groupMember)
    Parameters
    Type Name Description
    IXRGroupMember groupMember

    The Group member to add.

    Remarks

    groupMember must implement either IXRInteractor or IXRInteractionGroup.

    AddInteractionOverrideForGroupMember(IXRGroupMember, IXRGroupMember)

    Adds overrideGroupMember as a possible interaction override for sourceGroupMember.

    Declaration
    public void AddInteractionOverrideForGroupMember(IXRGroupMember sourceGroupMember, IXRGroupMember overrideGroupMember)
    Parameters
    Type Name Description
    IXRGroupMember sourceGroupMember

    The Group member whose interaction can be potentially overridden by overrideGroupMember.

    IXRGroupMember overrideGroupMember

    The Group member to add as a possible interaction override.

    Remarks

    Both members must be registered with the Group. Additionally, overrideGroupMember must implement either IXRSelectInteractor or IXRInteractionOverrideGroup. This method must not create a loop in the chain of overrides for sourceGroupMember. Use the implementation of GroupMemberIsPartOfOverrideChain(IXRGroupMember, IXRGroupMember) to ensure there is no loop before adding override.

    AddStartingInteractionOverride(Object, Object)

    Adds overrideGroupMember to the list of Group members that are to be added as interaction overrides for sourceGroupMember on Awake. Both objects must already be included in the startingGroupMembers list. The override object should implement either the IXRSelectInteractor interface or the IXRInteractionOverrideGroup interface.

    Declaration
    public void AddStartingInteractionOverride(Object sourceGroupMember, Object overrideGroupMember)
    Parameters
    Type Name Description
    Object sourceGroupMember

    The Group member whose interaction can be potentially overridden by overrideGroupMember.

    Object overrideGroupMember

    The Group member to add as a possible interaction override.

    Remarks

    Use AddInteractionOverrideForGroupMember(IXRGroupMember, IXRGroupMember) to add to the interaction overrides used after Awake.

    See Also
    RemoveStartingInteractionOverride(Object, Object)
    AddInteractionOverrideForGroupMember(IXRGroupMember, IXRGroupMember)

    Awake()

    See MonoBehaviour.

    Declaration
    protected virtual void Awake()

    ClearGroupMembers()

    Removes all Group members from the list of members.

    Declaration
    public void ClearGroupMembers()

    ClearInteractionOverridesForGroupMember(IXRGroupMember)

    Clears the set of possible interaction overrides for sourceGroupMember.

    Declaration
    public bool ClearInteractionOverridesForGroupMember(IXRGroupMember sourceGroupMember)
    Parameters
    Type Name Description
    IXRGroupMember sourceGroupMember

    The Group member whose interaction can no longer be overridden.

    Returns
    Type Description
    bool

    Returns true if there is a set of overrides for sourceGroupMember. Otherwise, returns false.

    Remarks

    sourceGroupMember must be registered with the Group.

    ContainsGroupMember(IXRGroupMember)

    Checks whether the given Group member exists in the list of members.

    Declaration
    public bool ContainsGroupMember(IXRGroupMember groupMember)
    Parameters
    Type Name Description
    IXRGroupMember groupMember

    The Group member to check for in the list.

    Returns
    Type Description
    bool

    Returns true if groupMember exists in the list. Otherwise, returns false.

    GetGroupMembers(List<IXRGroupMember>)

    Returns all members in the ordered list of Group members into List results.

    Declaration
    public void GetGroupMembers(List<IXRGroupMember> results)
    Parameters
    Type Name Description
    List<IXRGroupMember> results

    List to receive Group members.

    Remarks

    This method populates the list with the Group members at the time the method is called. It is not a live view, meaning Group members added or removed afterward will not be reflected in the results of this method. Clears results before adding to it.

    GetInteractionOverridesForGroupMember(IXRGroupMember, HashSet<IXRGroupMember>)

    Returns all members in the set of possible interaction overrides for sourceGroupMember into set results.

    Declaration
    public void GetInteractionOverridesForGroupMember(IXRGroupMember sourceGroupMember, HashSet<IXRGroupMember> results)
    Parameters
    Type Name Description
    IXRGroupMember sourceGroupMember

    The Group member whose overrides to get.

    HashSet<IXRGroupMember> results

    Set to receive override Group members.

    Remarks

    sourceGroupMember must be registered with the Group. This method populates the set with the Group members at the time the method is called. It is not a live view, meaning override Group members added or removed afterward will not be reflected in the results of this method. Clears results before adding to it.

    GroupMemberIsPartOfOverrideChain(IXRGroupMember, IXRGroupMember)

    Checks whether potentialOverrideGroupMember is either the same as sourceGroupMember or part of a chain of its override Group members and their overrides.

    Declaration
    public bool GroupMemberIsPartOfOverrideChain(IXRGroupMember sourceGroupMember, IXRGroupMember potentialOverrideGroupMember)
    Parameters
    Type Name Description
    IXRGroupMember sourceGroupMember

    The source Group member for the potential chain of override members.

    IXRGroupMember potentialOverrideGroupMember

    The Group member to check for as part of a chain of overrides.

    Returns
    Type Description
    bool

    Returns true if potentialOverrideGroupMember is either the same as sourceGroupMember or part of a chain of its override Group members and their overrides. Otherwise, returns false.

    HasDependencyOnGroup(IXRInteractionGroup)

    Checks whether the given Group is either the same as this Group or a dependency of any member Group.

    Declaration
    public bool HasDependencyOnGroup(IXRInteractionGroup group)
    Parameters
    Type Name Description
    IXRInteractionGroup group

    The Group to check for as a dependency.

    Returns
    Type Description
    bool

    Returns true if group is either the same as this Group or a dependency of this Group. Otherwise, returns false.

    MoveGroupMemberTo(IXRGroupMember, int)

    Moves the given Group member to the specified index in the ordered list of members in the Group. If the member is not in the list, this can be used to insert the member at the specified index.

    Declaration
    public void MoveGroupMemberTo(IXRGroupMember groupMember, int newIndex)
    Parameters
    Type Name Description
    IXRGroupMember groupMember

    The Group member to move or add.

    int newIndex

    New index of the Group member.

    Remarks

    groupMember must implement either IXRInteractor or IXRInteractionGroup.

    OnDestroy()

    See MonoBehaviour.

    Declaration
    protected virtual void OnDestroy()

    OnDisable()

    See MonoBehaviour.

    Declaration
    protected virtual void OnDisable()

    OnEnable()

    See MonoBehaviour.

    Declaration
    protected virtual void OnEnable()

    OnFocusEntering(FocusEnterEventArgs)

    The XRInteractionManager calls this method right before the Interaction group first gains focus of an Interactable in a first pass.

    Declaration
    public void OnFocusEntering(FocusEnterEventArgs args)
    Parameters
    Type Name Description
    FocusEnterEventArgs args

    Event data containing the Interaction group that is initiating the focus.

    Remarks

    args is only valid during this method call, do not hold a reference to it.
    This method is also invoked when a member interaction group (meaning the group is also an IXRGroupMember added to this interaction group) caused the focus. However, the event data (interactionGroup) contains the reference to the group that directly caused the focus event, so it may not be equal to this group.

    See Also
    OnFocusEntered(FocusEnterEventArgs)

    OnFocusExiting(FocusExitEventArgs)

    The XRInteractionManager calls this method right before the Interaction group loses focus of an Interactable in a first pass.

    Declaration
    public void OnFocusExiting(FocusExitEventArgs args)
    Parameters
    Type Name Description
    FocusExitEventArgs args

    Event data containing the Interaction group that is losing focus.

    Remarks

    args is only valid during this method call, do not hold a reference to it.

    See Also
    OnFocusExited(FocusExitEventArgs)

    RemoveGroupMember(IXRGroupMember)

    Removes the given Group member from the list of members.

    Declaration
    public bool RemoveGroupMember(IXRGroupMember groupMember)
    Parameters
    Type Name Description
    IXRGroupMember groupMember

    The Group member to remove.

    Returns
    Type Description
    bool

    Returns true if groupMember was removed from the list. Otherwise, returns false if groupMember was not found in the list.

    RemoveInteractionOverrideForGroupMember(IXRGroupMember, IXRGroupMember)

    Removes overrideGroupMember as a possible interaction override for sourceGroupMember.

    Declaration
    public bool RemoveInteractionOverrideForGroupMember(IXRGroupMember sourceGroupMember, IXRGroupMember overrideGroupMember)
    Parameters
    Type Name Description
    IXRGroupMember sourceGroupMember

    The Group member whose interaction can no longer be overridden by overrideGroupMember.

    IXRGroupMember overrideGroupMember

    The Group member to remove as a possible interaction override.

    Returns
    Type Description
    bool

    Returns true if overrideGroupMember was removed from the set of potential overrides for sourceGroupMember. Otherwise, returns false if overrideGroupMember was not part of the set.

    Remarks

    sourceGroupMember must be registered with the Group.

    RemoveStartingInteractionOverride(Object, Object)

    Removes overrideGroupMember from the list of Group members that are to be added as interaction overrides for sourceGroupMember on Awake.

    Declaration
    public bool RemoveStartingInteractionOverride(Object sourceGroupMember, Object overrideGroupMember)
    Parameters
    Type Name Description
    Object sourceGroupMember

    The Group member whose interaction can no longer be overridden by overrideGroupMember.

    Object overrideGroupMember

    The Group member to remove as a possible interaction override.

    Returns
    Type Description
    bool

    Returns true if overrideGroupMember was removed from the list of potential overrides for sourceGroupMember. Otherwise, returns false if overrideGroupMember was not part of the list.

    Remarks

    Use RemoveInteractionOverrideForGroupMember(IXRGroupMember, IXRGroupMember) to remove from the interaction overrides used after Awake.

    See Also
    AddStartingInteractionOverride(Object, Object)
    RemoveInteractionOverrideForGroupMember(IXRGroupMember, IXRGroupMember)

    Reset()

    See MonoBehaviour.

    Declaration
    [Conditional("UNITY_EDITOR")]
    protected virtual void Reset()

    Events

    registered

    Calls the methods in its invocation list when this Interaction Group is registered with an Interaction Manager.

    Declaration
    public event Action<InteractionGroupRegisteredEventArgs> registered
    Event Type
    Type Description
    Action<InteractionGroupRegisteredEventArgs>
    Remarks

    The InteractionGroupRegisteredEventArgs passed to each listener is only valid while the event is invoked, do not hold a reference to it.

    See Also
    interactionGroupRegistered

    unregistered

    Calls the methods in its invocation list when this Interaction Group is unregistered from an Interaction Manager.

    Declaration
    public event Action<InteractionGroupUnregisteredEventArgs> unregistered
    Event Type
    Type Description
    Action<InteractionGroupUnregisteredEventArgs>
    Remarks

    The InteractionGroupUnregisteredEventArgs passed to each listener is only valid while the event is invoked, do not hold a reference to it.

    See Also
    interactionGroupUnregistered

    Implements

    IXRInteractionOverrideGroup
    IXRInteractionGroup
    IXRGroupMember

    Extension Methods

    XRGroupMemberExtensions.GetTopLevelContainingGroup(IXRGroupMember)
    In This Article
    Back to top
    Copyright © 2025 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)