skills/ar-vr/unity-xr/SKILL.md
Develops XR applications using Unity for AR and VR, focusing on immersive interactions and cross-platform compatibility.
npx skillsauth add alphaonedev/openclaw-graph unity-xrInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill automates and assists in developing XR applications with Unity, focusing on AR and VR features like hand tracking, spatial audio, and multi-platform builds for devices such as Oculus Quest or HoloLens. It leverages Unity's XR ecosystem to streamline immersive interaction code.
Use this skill when creating interactive AR/VR experiences, such as virtual training simulations, 3D product visualizations, or multiplayer VR games. Apply it for cross-platform projects needing device-agnostic code, like adapting to Android ARCore and iOS ARKit, or when optimizing for performance on standalone VR headsets.
XRBaseInteractable to define grabbable objects in VR scenes.ARPlaneManager to track surfaces.XRSettings.enabled = true; for specific devices.XRInteractorLineVisual, with collision checks in 2-3 lines of C# code.To set up a basic XR project, first install Unity and the XR packages via the Package Manager. Import the XR Interaction Toolkit, then create a new scene and add an XR Rig prefab. For AR, initialize an AR Session in your script's Start() method. Always test on target hardware early. For VR interactions, attach scripts to GameObjects to handle events like OnSelectEntered(). Structure code modularly: separate input handling from logic. When building, use command-line builds for automation, e.g., run Unity -batchmode -projectPath /path/to/project -buildTarget Android -executeMethod BuildScript.PerformBuild.
Unity -quit -batchmode -projectPath /path/to/project -buildWindows64Player /output/path.exe to compile a VR build; include -logFile build.log for output.using UnityEngine.XR.Interaction.Toolkit;
public class GrabHandler : XRGrabInteractable { void OnSelectEntered(SelectEnterEventArgs args) { transform.position = args.interactor.transform.position; } }
using UnityEngine.XR.ARFoundation;
public class ARManager : MonoBehaviour { private ARSession arSession; void Start() { arSession = FindObjectOfType<ARSession>(); arSession.enabled = true; } }
ProjectSettings/ProjectSettings.asset to set XR plugins, e.g., add XR Plug-in Management: Oculus under XRSettings. For API keys (e.g., for AR services), use environment variables like $ARFOUNDATION_API_KEY in build scripts.https://services.unity.com/api/v1/projects for cloud builds, authenticated via $UNITY_ACCESS_TOKEN.Integrate this skill with Unity's core engine by adding XR packages via the Package Manager CLI: Unity -projectPath /path -importPackage path/to/xri.unitypackage. For external tools, link with Unreal or Blender by exporting FBX models, then import into Unity and apply XR scripts. If using version control, ensure .meta files are tracked; configure Git hooks to validate XR settings. For authentication in cloud integrations (e.g., Unity Cloud Build), set env vars like $UNITY_PROJECT_ID and use them in scripts: string projectId = System.Environment.GetEnvironmentVariable("UNITY_PROJECT_ID");. Always match Unity versions across integrations to avoid API mismatches.
Check for common XR errors like device not found: In code, use if (!XRSettings.isDeviceActive) { Debug.LogError("XR device inactive"); } before starting sessions. For AR tracking failures, handle via ARSession.stateChanged events:
ARSession.stateChanged += OnStateChanged; void OnStateChanged(ARSessionStateChangedEventArgs args) { if (args.state == ARSessionState.Error) { Debug.LogError(args.errorCode); } }
Use Unity's ErrorPause in Editor settings for debugging. For build errors, parse CLI logs with scripts, e.g., check exit codes: if (process.ExitCode != 0) { throw new Exception("Build failed"); }. Always wrap API calls in try-catch blocks for runtime exceptions, like try { arSession.Reset(); } catch (Exception e) { Debug.Log(e.Message); }.
VR Interaction Scene: To create a simple VR grabber, start a Unity project, import XR Interaction Toolkit, add an XR Rig to your scene, and attach this script to an object:
using UnityEngine.XR.Interaction.Toolkit;
public class SimpleGrabber : XRGrabInteractable { protected override void OnSelectEntered(SelectEnterEventArgs args) { rigidbody.isKinematic = true; } }
Build and run on an Oculus device using Unity -batchmode -buildTarget Android -executeMethod BuildPipeline.BuildPlayer.
AR Plane Detection: For an AR app, add AR Foundation to your project, create a script to detect planes:
using UnityEngine.XR.ARFoundation;
public class PlaneDetector : MonoBehaviour { private ARPlaneManager planeManager; void Start() { planeManager = gameObject.AddComponent<ARPlaneManager>(); planeManager.planesChanged += OnPlanesChanged; } }
Test on a mobile device by building with Unity -projectPath /path -buildTarget iOS -customBuildTarget iPhone.
tools
Root web development: project structure, tooling selection, deployment decisions
development
WebAssembly: Rust/Go/C to WASM, wasm-bindgen, Emscripten, WASM Component Model
development
Vue 3: Composition API script setup, Pinia, Vue Router 4, SFCs, Vite, Nuxt 3
tools
Tailwind CSS 4: utility classes, config, JIT, arbitrary values, darkMode, plugins, shadcn/ui