docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class ARMarkerManager

    A trackable manager that enables you to detect and track AR markers. Add this component to your XR Origin GameObject to enable marker tracking in your app.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>
    ARMarkerManager
    Implements
    ITrackablesChanged<ARMarker>
    Inherited Members
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.trackablesChanged
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.m_Trackables
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.m_PendingAdds
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.origin
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.gameObjectName
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.trackables
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.GetPrefab()
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.Awake()
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.OnEnable()
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.Update()
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.CreateTrackableImmediate(XRMarker)
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.CreateTrackableFromExisting(ARMarker, XRMarker)
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.DestroyPendingTrackable(TrackableId)
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.CanBeAddedToSubsystem(ARMarker)
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.SetTrackablesActive(bool)
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.OnTrackablesChanged(List<ARMarker>, List<ARMarker>, List<ARMarker>)
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.OnCreateTrackable(ARMarker)
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.OnAfterSetSessionRelativeData(ARMarker, XRMarker)
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.subsystem
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.descriptor
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.GetActiveSubsystemInstance()
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.EnsureSubsystemInstanceSet()
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.OnEnable()
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.OnDisable()
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.OnDestroy()
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.OnBeforeStart()
    SubsystemLifecycleManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider>.OnAfterStart()
    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.StartCoroutine_Auto(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.destroyCancellationToken
    MonoBehaviour.useGUILayout
    MonoBehaviour.didStart
    MonoBehaviour.didAwake
    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.GetComponentIndex()
    Component.CompareTag(string)
    Component.CompareTag(TagHandle)
    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.InstantiateAsync<T>(T)
    Object.InstantiateAsync<T>(T, Transform)
    Object.InstantiateAsync<T>(T, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int)
    Object.InstantiateAsync<T>(T, int, Transform)
    Object.InstantiateAsync<T>(T, int, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion)
    Object.InstantiateAsync<T>(T, int, Transform, Vector3, Quaternion, CancellationToken)
    Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>)
    Object.InstantiateAsync<T>(T, int, Transform, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, CancellationToken)
    Object.InstantiateAsync<T>(T, InstantiateParameters, CancellationToken)
    Object.InstantiateAsync<T>(T, int, InstantiateParameters, CancellationToken)
    Object.InstantiateAsync<T>(T, Vector3, Quaternion, InstantiateParameters, CancellationToken)
    Object.InstantiateAsync<T>(T, int, Vector3, Quaternion, InstantiateParameters, CancellationToken)
    Object.InstantiateAsync<T>(T, int, ReadOnlySpan<Vector3>, ReadOnlySpan<Quaternion>, InstantiateParameters, CancellationToken)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Scene)
    Object.Instantiate<T>(T, InstantiateParameters)
    Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)
    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.DestroyObject(Object, float)
    Object.DestroyObject(Object)
    Object.FindSceneObjectsOfType(Type)
    Object.FindObjectsOfTypeIncludingAssets(Type)
    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.FindObjectsOfTypeAll(Type)
    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.ARFoundation
    Assembly: Unity.XR.ARFoundation.dll
    Syntax
    [DefaultExecutionOrder(-2147483647)]
    [DisallowMultipleComponent]
    [RequireComponent(typeof(XROrigin))]
    public class ARMarkerManager : ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>, ITrackablesChanged<ARMarker>
    Remarks

    An AR Marker is a known visual pattern in the physical environment, such as a QR code or an ArUco tag, that a device can recognize and track. This manager detects these markers and creates GameObjects with ARMarker components to represent them.

    Properties

    gameObjectName

    The name to assign to the GameObject instantiated for each ARMarker.

    Declaration
    protected override string gameObjectName { get; }
    Property Value
    Type Description
    string
    Overrides
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.gameObjectName

    markerPrefab

    Get or set the prefab to instantiate for each detected AR marker. Can be null.

    Declaration
    public GameObject markerPrefab { get; set; }
    Property Value
    Type Description
    GameObject

    Methods

    GetMarker(TrackableId)

    Gets the ARMarker with the given trackableId, or null if no such marker exists.

    Declaration
    public ARMarker GetMarker(TrackableId trackableId)
    Parameters
    Type Name Description
    TrackableId trackableId

    The TrackableId of the ARMarker to retrieve.

    Returns
    Type Description
    ARMarker

    The ARMarker or null.

    GetPrefab()

    Get the prefab to instantiate for each ARMarker.

    Declaration
    protected override GameObject GetPrefab()
    Returns
    Type Description
    GameObject

    The prefab to instantiate for each ARMarker.

    Overrides
    ARTrackableManager<XRMarkerSubsystem, XRMarkerSubsystemDescriptor, XRMarkerSubsystem.Provider, XRMarker, ARMarker>.GetPrefab()

    Raycast(Ray, TrackableType, Allocator)

    Performs a raycast against all tracked markers.

    Declaration
    public NativeArray<XRRaycastHit> Raycast(Ray ray, TrackableType trackableTypeMask, Allocator allocator)
    Parameters
    Type Name Description
    Ray ray

    The ray, in session space, to cast against the markers.

    TrackableType trackableTypeMask

    A mask of trackable types to raycast against. If this mask does not include Marker, the method returns an empty array.

    Allocator allocator

    The allocator to use for the returned NativeArray_1 of hits. The caller is responsible for disposing this array.

    Returns
    Type Description
    NativeArray<XRRaycastHit>

    A NativeArray_1 containing the raycast hit data for each hit marker. The caller must dispose of this array for persistent allocators.

    Remarks

    This method checks for intersections between the given ray and the rectangular plane of each active ARMarker. It is an implementation of the Raycast(Ray, TrackableType, Allocator) method.

    TryGetBytesData(ARMarker)

    Attempts to get the encoded data of a specific marker, decoded as a byte array.

    Declaration
    public Result<byte[]> TryGetBytesData(ARMarker marker)
    Parameters
    Type Name Description
    ARMarker marker

    The ARMarker for which to retrieve the encoded data.

    Returns
    Type Description
    Result<byte[]>

    A Result which contains the raw byte array if successful.

    Remarks

    To determine if a marker's encoded data is available as binary data, you can check its dataBuffer property. If the bufferType is Uint8, this method should be used to retrieve the encoded data.

    This method allocates a new managed byte[] on each successful call. For performance critical applications that need to avoid garbage collection, consider using (TryGetBytesData(ARMarker, Allocator)).

    TryGetBytesData(ARMarker, Allocator)

    Attempts to get the encoded data of a specific marker, decoded as a NativeArray_1.

    Declaration
    public Result<NativeArray<byte>> TryGetBytesData(ARMarker marker, Allocator allocator)
    Parameters
    Type Name Description
    ARMarker marker

    The marker with the encoded data to retrieve.

    Allocator allocator

    The allocator to use for the returned NativeArray_1.

    Returns
    Type Description
    Result<NativeArray<byte>>

    A Result containing the raw bytes in a NativeArray_1 if the operation is successful.

    Remarks

    This method is useful for performance sensitive applications as it avoids managed memory allocations. The caller is responsible for disposing the returned NativeArray_1 for persistent allocators.

    TryGetStringData(ARMarker)

    Attempts to get the encoded data of a specific marker, decoded as a string.

    Declaration
    public Result<string> TryGetStringData(ARMarker marker)
    Parameters
    Type Name Description
    ARMarker marker

    The ARMarker for which to retrieve the encoded data.

    Returns
    Type Description
    Result<string>

    A Result which contains the decoded string if successful.

    Remarks

    To determine if a marker's encoded data is available as a string, you can check its dataBuffer property. If the bufferType is String, this method should be used to retrieve the encoded data.

    Alternatively, if you expect string data (for example, you are scanning QR codes with URLs), you can call this method directly and check the status to see if it was successful.

    Implements

    ITrackablesChanged<TTrackable>
    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)