docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class ARMarker

    Represents a visual marker, like a QR code or an AprilTag, that has been detected in the physical environment.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    ARTrackable
    ARTrackable<XRMarker, ARMarker>
    ARMarker
    Implements
    ITrackable
    Inherited Members
    ARTrackable<XRMarker, ARMarker>.destroyOnRemoval
    ARTrackable<XRMarker, ARMarker>.trackableId
    ARTrackable<XRMarker, ARMarker>.pose
    ARTrackable<XRMarker, ARMarker>.trackingState
    ARTrackable<XRMarker, ARMarker>.nativePtr
    ARTrackable<XRMarker, ARMarker>.parentId
    ARTrackable<XRMarker, ARMarker>.pending
    ARTrackable<XRMarker, ARMarker>.sessionRelativeData
    ARTrackable<XRMarker, ARMarker>.OnAfterSetSessionRelativeData()
    ARTrackable.trackableId
    ARTrackable.pose
    ARTrackable.trackingState
    ARTrackable.nativePtr
    ARTrackable.parentId
    ARTrackable.OnDestroy()
    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(-2147483646)]
    [DisallowMultipleComponent]
    public class ARMarker : ARTrackable<XRMarker, ARMarker>, ITrackable
    Remarks

    Generated by the ARMarkerManager when an AR device detects a marker in the environment.

    Related information: AR Marker component

    Properties

    dataBuffer

    Provides metadata that describes the embedded data available for this marker, such as its type.

    Declaration
    public XRSpatialBuffer dataBuffer { get; }
    Property Value
    Type Description
    XRSpatialBuffer
    Remarks

    To get the encoded data, you should first inspect the bufferType property of the returned buffer. Based on the buffer type, you can then call the appropriate method to retrieve the data, such as TryGetStringData() for text based encoded data or TryGetBytesData(Allocator) for binary data.

    For convenience, if you already know the expected encoded data type (for example, you are only scanning QR codes with URLs), you can call TryGetStringData() directly without first checking this buffer.

    markerId

    A numerical identifier for the marker, specific to its type.

    Declaration
    public int markerId { get; }
    Property Value
    Type Description
    int
    Remarks

    For the ArUco or AprilTag marker types, gets the numerical ID encoded in the tag. For other types, this value isn't relevant.

    markerType

    The type of the detected marker.

    Declaration
    public XRMarkerType markerType { get; }
    Property Value
    Type Description
    XRMarkerType
    Remarks

    This indicates the family of the marker, such as QRCode or ArUco. You can use this to handle different types of markers in your application.

    size

    The physical size of the detected marker in meters.

    Declaration
    public Vector2 size { get; }
    Property Value
    Type Description
    Vector2
    Remarks

    This value represents the width and height of the marker. The X component (size.x) represents the width and corresponds to the marker's local X-axis. The Y component (size.y) represents the height and corresponds to the marker's local Z-axis.

    Methods

    TryGetBytesData()

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

    Declaration
    public Result<byte[]> TryGetBytesData()
    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 the (TryGetBytesData(Allocator)).

    Exceptions
    Type Condition
    InvalidOperationException

    Thrown if the required ARMarkerManager instance cannot be found.

    TryGetBytesData(Allocator)

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

    Declaration
    public Result<NativeArray<byte>> TryGetBytesData(Allocator allocator)
    Parameters
    Type Name Description
    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.

    Exceptions
    Type Condition
    InvalidOperationException

    Thrown if the required ARMarkerManager instance cannot be found.

    TryGetStringData()

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

    Declaration
    public Result<string> TryGetStringData()
    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.

    Exceptions
    Type Condition
    InvalidOperationException

    Thrown if the required ARMarkerManager instance cannot be found.

    Implements

    ITrackable
    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)