unity-xr について
unity-xr は、Unity で AR・VR アプリを開発するためのスキルです。XR インタラクション、AR Foundation の機能、複数ターゲット向けビルド、没入型プロジェクトの性能確認を扱います。
主な機能
- 01XR Interaction Toolkit による操作の作成
- 02AR Foundation による平面検出
- 03複数ターゲット向けビルド設定
- 04VR ポインターのレイキャスト実装
- 05Unity Profiler による性能監視
活用シーン
- 01オブジェクトをつかめる VR シーンの構築
- 02平面を検出する AR アプリの作成
- 03対象デバイス向け XR ビルドの自動化
- 04スタンドアロン VR ヘッドセットでの性能確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill unity-xrインストール後、Claude Code で/unity-xrを入力して読み込まれたか確認します。
詳細
目的
このスキルは、Unity を使った XR アプリケーションの開発を自動化し、支援します。Oculus Quest や HoloLens などのデバイス向けに、ハンドトラッキング、空間オーディオ、マルチプラットフォームビルドといった AR/VR 機能に重点を置いています。Unity の XR エコシステムを活用し、没入型インタラクションのコードを効率化します。
使用する場面
バーチャルトレーニングシミュレーション、3D 製品ビジュアライゼーション、マルチプレイヤー VR ゲームなど、インタラクティブな AR/VR 体験を作成するときにこのスキルを使用します。Android ARCore や iOS ARKit に対応させる場合のように、デバイスに依存しないコードが必要なクロスプラットフォームプロジェクトや、スタンドアロン VR ヘッドセット向けにパフォーマンスを最適化するときにも適用します。
主な機能
- 入力システム向けに XR Interaction Toolkit を処理します。
XRBaseInteractableを使用して、VR シーン内でつかめるオブジェクトを定義します。 - 統一された AR 開発向けに AR Foundation をサポートします。
ARPlaneManagerを使って平面検出を有効にし、表面を追跡します。 - クロスプラットフォームの互換性を確保します。Unity の Player Settings API を使用して複数のターゲット向けにビルド設定を構成します。たとえば、特定のデバイス向けに
XRSettings.enabled = true;を設定します。 - 没入型インタラクションを管理します。
XRInteractorLineVisualを使って VR ポインター用のレイキャストを実装し、2~3 行の C# コードで衝突を確認します。 - パフォーマンスを最適化します。Unity の Profiler でフレームレートを監視し、XR プラグインと連携して VR の上限を 90 FPS に設定します。
使用パターン
基本的な XR プロジェクトを設定するには、まず Unity と XR パッケージを Package Manager からインストールします。XR Interaction Toolkit をインポートし、新しいシーンを作成して XR Rig プレハブを追加します。AR の場合は、スクリプトの Start() メソッドで AR Session を初期化します。必ず早い段階でターゲットのハードウェア上でテストしてください。VR インタラクションでは、GameObject にスクリプトをアタッチし、OnSelectEntered() などのイベントを処理します。コードはモジュール化し、入力処理とロジックを分離します。ビルド時には、自動化のためにコマンドラインビルドを使用します。たとえば、Unity -batchmode -projectPath /path/to/project -buildTarget Android -executeMethod BuildScript.PerformBuild を実行します。
一般的なコマンド/API
- ビルド用 Unity CLI:
Unity -quit -batchmode -projectPath /path/to/project -buildWindows64Player /output/path.exeを使用して VR ビルドをコンパイルします。出力には-logFile build.logを含めます。 - XR Interaction API のスニペット:
using UnityEngine.XR.Interaction.Toolkit; public class GrabHandler : XRGrabInteractable { void OnSelectEntered(SelectEnterEventArgs args) { transform.position = args.interactor.transform.position; } } - セッション管理用 AR Foundation API:
using UnityEngine.XR.ARFoundation; public class ARManager : MonoBehaviour { private ARSession arSession; void Start() { arSession = FindObjectOfType<ARSession>(); arSession.enabled = true; } } - 設定形式:Unity の
ProjectSettings/ProjectSettings.assetを編集して XR プラグインを設定します。たとえば、XRSettingsの下にXR Plug-in Management: Oculusを追加します。API キー(AR サービス用など)には、ビルドスクリプトで$ARFOUNDATION_API_KEYのような環境変数を使用します。 - 一般的なエンドポイント:Unity サービスと連携する場合は、クラウドビルド用の
https://services.unity.com/api/v1/projectsなどの REST エンドポイントを参照します。認証には$UNITY_ACCESS_TOKENを使用します。
統合に関する注意事項
Package Manager CLI で XR パッケージを追加し、このスキルを Unity のコアエンジンと統合します:Unity -projectPath /path -importPackage path/to/xri.unitypackage。外部ツールを使用する場合は、FBX モデルをエクスポートして Unreal や Blender と連携し、その後 Unity にインポートして XR スクリプトを適用します。バージョン管理を使用する場合は、.meta ファイルが追跡されていることを確認し、XR 設定を検証する Git フックを構成します。クラウド統合(Unity Cloud Build など)の認証には、$UNITY_PROJECT_ID のような環境変数を設定し、スクリプトで使用します:string projectId = System.Environment.GetEnvironmentVariable("UNITY_PROJECT_ID");。API の不一致を避けるため、統合するすべての環境で Unity のバージョンを必ず一致させてください。
エラー処理
デバイスが見つからないなど、よくある XR エラーを確認してください。セッションを開始する前に、コードで if (!XRSettings.isDeviceActive) { Debug.LogError("XR device inactive"); } を使用します。AR トラッキングの失敗には、ARSession.stateChanged イベントで対処します。
ARSession.stateChanged += OnStateChanged; void OnStateChanged(ARSessionStateChangedEventArgs args) { if (args.state == ARSessionState.Error) { Debug.LogError(args.errorCode); } }
デバッグには、Editor の設定で Unity の ErrorPause を使用します。ビルドエラーについては、スクリプトで CLI ログを解析します。たとえば、終了コードを確認します。if (process.ExitCode != 0) { throw new Exception("Build failed"); }。実行時例外に備えて、API 呼び出しは必ず try-catch ブロックで囲みます。たとえば、try { arSession.Reset(); } catch (Exception e) { Debug.Log(e.Message); }。
具体的な使用例
-
VR インタラクションシーン:シンプルな VR グラバーを作成するには、Unity プロジェクトを作成し、XR Interaction Toolkit をインポートして、シーンに XR Rig を追加し、次のスクリプトをオブジェクトにアタッチします。
using UnityEngine.XR.Interaction.Toolkit; public class SimpleGrabber : XRGrabInteractable { protected override void OnSelectEntered(SelectEnterEventArgs args) { rigidbody.isKinematic = true; } }Unity -batchmode -buildTarget Android -executeMethod BuildPipeline.BuildPlayerを使用して、Oculus デバイスでビルドして実行します。 -
AR 平面検出:AR アプリでは、プロジェクトに AR Foundation を追加し、平面を検出するスクリプトを作成します。
using UnityEngine.XR.ARFoundation; public class PlaneDetector : MonoBehaviour { private ARPlaneManager planeManager; void Start() { planeManager = gameObject.AddComponent<ARPlaneManager>(); planeManager.planesChanged += OnPlanesChanged; } }Unity -projectPath /path -buildTarget iOS -customBuildTarget iPhoneを使用してビルドし、モバイルデバイスでテストします。
グラフの関係
- 接続先:unity-core(一般的な Unity スクリプト作成機能とエンジン機能)
- 所属先:ar-vr クラスター(ほかの AR/VR スキルと依存関係を共有)
- 関連先:3d-modeling(XR シーンへのアセットのインポート)