UxrAvatarController Class

Base class for UxrAvatar controllers. UxrAvatarController components are responsible for updating the avatar. UltimateXR provides the UxrStandardAvatarController which has great functionality. For flexibility and scalability, different avatar controllers can be created if required.

Inheritance Hierarchy

Namespace: UltimateXR.Avatar.Controllers
Assembly: UltimateXR (in UltimateXR.dll) Version:



public abstract class UxrAvatarController : UxrAvatarComponent<UxrAvatarController>

The UxrAvatarController type exposes the following members.


Protected methodUxrAvatarController


Public propertyAllowHandTracking Gets or sets whether hand tracking is used when available.


Public methodCanHandInteractWithUI Gets if the hand is available to interact with UI elements, such as pressing buttons. This is used by the UI interaction system to ignore the hand for these events. For example, when the hand is holding an object it could be desirable to not let it interact inadvertently with any user interface.
Protected methodUpdateAvatar Updates the avatar for the given frame. This is normally in charge of updating input devices, tracking devices and locomotion. Animation is left for a later stage (UpdateAvatarAnimation()), to make sure it is performed in the right order right after Unity has updated the built-in animation components such as Animator.
Protected methodUpdateAvatarAnimation Updates the animation and rig transforms for the given frame. It is performed in a later stage than UpdateAvatar() to make sure the transforms override the transforms that Unity may have updated using built-in components such as Animator.
Protected methodUpdateAvatarManipulation Executes the avatar manipulation actions based on user input.
Protected methodUpdateAvatarPostProcess Updates the avatar for a given frame, at the end of all stages and UltimateXR manager updates such as the UxrGrabManager. It can be used to perform operations that require to be executed at the end of all stages, such as Inverse Kinematics.
Protected methodUpdateAvatarUsingTrackingDevices Updates the avatar using the current tracking data.
Protected methodUpdateInputDevice Updates the currently enabled input devices.
Protected methodUpdateLocomotion Updates the enabled locomotion components in the avatar.
Protected methodUpdateTrackingDevices Updates the tracking devices.

Extension Methods

Public Extension MethodCheckSetEnabled Enables/disabled the component if it isn’t enabled already. (Defined by MonoBehaviourExt.)
Public Extension MethodGetOrAddComponent<T> Gets the Component of a given type. If it doesn’t exist, it is added to the GameObject. (Defined by ComponentExt.)
Public Extension MethodGetPathUnderScene Gets the full path under current scene, including all parents, but scene name, for the given component. (Defined by ComponentExt.)
Public Extension MethodGetSceneUid Gets an unique identifier string for the given component. (Defined by ComponentExt.)
Public Extension MethodGetUniqueScenePath Gets an unique path in the scene for the given component. It will include scene name, sibling and component indices to make it unique. (Defined by ComponentExt.)
Public Extension MethodLoopCoroutine Creates a coroutine that simplifies executing a loop during a certain amount of time. (Defined by MonoBehaviourExt.)
Public Extension MethodSafeGetComponentInParent<T> Gets the Component of a given type in the GameObject or any of its parents. It also works on prefabs, where regular GetComponentInParent(Type, Boolean) will not work: https://issuetracker.unity3d.com/issues/getcomponentinparent-is-returning-null-when-the-gameobject-is-a-prefab (Defined by ComponentExt.)
Public Extension MethodShowInInspector(Boolean)Overloaded.
Controls whether to show the current object in the inspector. (Defined by ObjectExt.)
Public Extension MethodShowInInspector(Boolean, Boolean)Overloaded.
Controls whether to show the current object in the inspector and whether it is editable. (Defined by ObjectExt.)
Public Extension MethodThrowIfNull Throws an exception if the object is null. (Defined by ObjectExt.)


UxrAvatarController components require the UxrAvatar component in the same GameObject or any of its parents. Only one UxrAvatarController component type can be active at the same time.

See Also


UltimateXR.Avatar.Controllers Namespace