Meta Quest 3で、自分でUnityプロジェクトを新規作成し、
下の例の空が眺められるところまでいきます。
前提
- Windows10(基本Macでも同じです)
- Unity 2023.2.0f1
- Meta XR Core SDK 59.0.0
その他
- 以下がまだの人は 開発環境とヘッドセットのセットアップ から実施ください
- Meta Quest 3 が開発者モードになっていること
- Unityのインストール
- adbコマンドが使える状態になっていること
過去のQuestでの開発との大きな違い
- 以前は Oculus Integration SDK をAssetStore経由でインポートしていたかと思いますが、現在は非推奨となっています。Asset自体はストアにあるのでダウンロードは可能です。
- 以前はProject Settingsをポチポチ変更していましたが、今はその変更をサポートしてくれる仕組みが導入されています。
手順
Unity
- プロジェクトの作成
- ビルド設定
- File → Build Settings…
- Androidを選択して Switch Platform
-
com.meta.xr.sdk.core
をPackage Managerで install package by name からインストール- Restart Edtiorのダイアログが表示されるので、UnityEdtiorを再起動します
- Project Settings
- シーンの編集
- Main Cameraを削除
- Packages/Meta XR Core SDK/PrefabsからOVRCameraRigをドラッグアンドドロップ
- OVR ManagerのQuest3にチェックを入れます
- ビルド
- Add Open Scenes
- Build
- 適当なフォルダに適当なファイル名でapkファイルを出力します
インストールと実行
- インストール
- adb install ビルドした.apk
- Quest3
- アプリライブラリを選択
- 検索ボックスの右側にあるドロップダウンから、提供元不明を選択
- インストールしたプロジェクトを選択して実行
- 実行したけど何も起こらない場合、裏でDeploymentOperationFailedExceptionが発生している可能性があります。Unityの手順4.bを実施しているか確認してください。
- 例の空が見えているはずです。
エラー
DeploymentOperationFailedException が出る
原因
Android の Manifest ファイルが複数存在すると起こりうるらしい。参考。
対応方法
両方やる必要はありません。
- Project Settings → Player → Publish Settings → BuildのCustom Main Manifestのチェックを外す
- Tool → Oculus → Remove AnsroidManifest.xml と選択し
TextMeshPro のエラーが出る
エラー内容
Library\PackageCache\com.unity.textmeshpro@3.0.6\Scripts\Editor\TMP_PreBuildProcessor.cs(26,31): error CS1061: 'TMP_FontAsset' does not contain a definition for 'ClearFontAssetDataInternal' and no accessible extension method 'ClearFontAssetDataInternal' accepting a first argument of type 'TMP_FontAsset' could be found (are you missing a using directive or an assembly reference?)
原因
com.meta.xr.sdk.all
をPackage Managerからインストール(install package by name)すると、[com.meta.xr.sdk.interaction](https://developer.oculus.com/downloads/package/meta-xr-interaction-sdk/)
の依存関係にTextMeshPro 3.0.6が依存関係として入っているため、上記エラーが発生します。
対応方法
両方やる必要はありません。
- com.meta.xr.sdk.allをアンインストールして、必要なSDKのみをインストールする
- 上記手順はこちらです
- Unityのバージョンを変更し、TextMeshProのバージョンを下げる(未検証)