com.unity.xr.arfoundation 6.4.0
Source docsNotes: processedReleased December 9, 2025
Unity Compatibility
Minimum Unity: 6000.0
Package Dependencies
- com.unity.editorcoroutines (1.0.0)
- com.unity.inputsystem (1.6.3)
- com.unity.mathematics (1.2.6)
- com.unity.modules.particlesystem (1.0.0)
- com.unity.modules.ui (1.0.0)
- com.unity.modules.unityanalytics (1.0.0)
- com.unity.modules.unitywebrequest (1.0.0)
- com.unity.ugui (2.0.0)
- com.unity.xr.core-utils (2.5.1)
- com.unity.xr.management (4.4.0)
✨ Features
- Added `XRMarkerSubsystemDescriptor.Cinfo` properties for `id`, `providerType`, and `subsystemTypeOverride` that are needed during subsystem registration.
- Added [XRBoundingBoxBuilder](xref:UnityEngine.XR.ARSubsystems.XRBoundingBoxBuilder), [BoundedPlaneBuilder](xref:UnityEngine.XR.ARSubsystems.BoundedPlaneBuilder), and [XRMarkerBuilder](xref:UnityEngine.XR.ARSubsystems.XRMarkerBuilder) which provide fluent APIs for constructing `XRBoundingBox`, `BoundedPlane`, and `XRMarker` instances, respectively.
- Added `XRMarkerBuilder.WithPose` overload that takes an OpenXR `XrPosef` representing the session space pose and converts it to a Unity world space pose to build the marker with.
- Added `InnerWallFace` semantic label to [PlaneClassifications](xref:UnityEngine.XR.ARSubsystems.PlaneClassifications).
- Added support for the `IEquatable` and `IEquatable>` interfaces to [Result\](xref:UnityEngine.XR.ARSubsystems.Result`1).
- Added a `ToString` override to [XRResultStatus](xref:UnityEngine.XR.ARSubsystems.XRResultStatus).
- Added a `ToString` override to [Result\](xref:UnityEngine.XR.ARSubsystems.Result`1).
- Added an implicit conversion operator from [SerializableGuid](xref:UnityEngine.XR.ARSubsystems.SerializableGuid) to XrUuid if your project contains OpenXR Plug-in 1.16.0 or newer.
📈 Improvements
- Changed pre-release property types `ARMarker.markerId` and `XRMarker.markerId` from `int` to `uint`.
- Changed the type of [XRBoundingBox](xref:UnityEngine.XR.ARSubsystems.XRBoundingBox) from `struct` to `readonly struct`.
- Changed the pre-release methods `XRMarkerSubsystem.TryGetStringData` and `XRMarkerSubsystem.TryGetBytesData` to now take the marker's `TrackableId` as a new argument when querying for a marker's encoded data.
- ### Deprecated
- Deprecated and replaced the following properties of [XRAnchorSubsystemDescriptor.Cinfo](xref:UnityEngine.XR.ARSubsystems.XRAnchorSubsystemDescriptor.Cinfo) to allow providers to determine at runtime whether AR Foundation persistent anchor APIs are supported::
- - `supportsSaveAnchor` to `supportsSaveAnchorDelegate`
- - `supportsLoadAnchor` to `supportsLoadAnchorDelegate`
- - `supportsEraseAnchor` to `supportsEraseAnchorDelegate`
- - `supportsGetSavedAnchorIds` to `supportsGetSavedAnchorIdsDelegate`
🔧 Bug Fixes
- Fixed an issue with the XR Simulation provider where creating new sessions through loading new scenes would throw exceptions and fail to start those new sessions.
- Fixed an issue where disabling the AROcclusionManager could cause some objects to become incorrectly occluded for ARCore and ARKit apps.
- Fixed [ARRaycastManager](xref:UnityEngine.XR.ARFoundation.ARRaycastManager) so that fallback raycasts can still be invoked if the AR Raycast Manager component is created at runtime.
- Fixed internal code so that if trackables of different types share the same `TrackableId`, their GameObjects are spawned correctly with no exceptions logged to the console. (ARFB-665).
- Fixed `LoaderUtility` so that it correctly initializes or deinitializes the OpenXR Loader when you call `Initialize` or `Deinitialize`, respectfully.
- Fixed the following methods of [XRBoundingBox](xref:UnityEngine.XR.ARSubsystems.XRBoundingBox):
- - `ToString` now lists the struct members in the order they appear in the stuct
- - `Equals` now correctly considers a bounding box's `parentId` when comparing for equality
- - `GetHashCode` now correctly considers a bounding box's `parentId` when generating a hash code.
- Fixed pre-release `XRMarker` API documentation to indicate that its pose is in Unity world space and not in OpenXR session space.
- Fixed `ARTrackableManager` so that it calls `OnAfterSetSessionRelativeData` for added trackables.
- Fixed `SimulatedTrackedImage` and `SimulatedBoundingBox` so that they no longer use APIs which are deprecated in Unity 6.4 or newer.
