UnrealEngineのVRTemplateにおいてQuestLinkを使ってMetaQuestのヘッドセットでプレイする場合に、QuestLinkが切断されると復帰した時点でアプリが終了してしまいます。
これをQuestLink復帰後にVRで再びプレイできるようにしてみたのでその内容を記録しておきます。
試した環境
Windows11
UnrealEngine5.3.2
QuestPro + QuestLink
対応した内容
VRTemplateの作成
UnrealProjectBrowserでGAMESからVirtual Realityを選択してVRTemplateのプロジェクトを作成します。
アプリが終了しないようにする
以下を実行してQuestLink復帰時にアプリが終了しないようにします。
ただ、この対応だけだと復帰後にHMDにはプレイ映像は映らず操作ができない状態になります。
Content/VRTemplate/Blueprints/VRPawnを編集してBeginPlay時にExecuteCommandで以下を実行しておくようにします
xr.OpenXRExitAppOnRuntimeDrivenSessionExit false
VRに復帰できるようにする
以下の対応をしてHMDで映像が映って操作できる状態に復帰します。
Content/VRTemplate/Blueprints/VRPawnを編集してVRNotificationsコンポーネントを追加しHMDReconectedDelegateでEnableHMDノードをEnable引数にチェックを入れて実行するようにします
対応後の動作確認
以下の手順を実行します。
- WindowsビルドしてパッケージングしたVRTemplateを実行する
- MetaQuestProからUSBケーブルの線を抜く
- USBケーブルを再びさしてメニューなどからQuestLinkを有効にする
本来だとこの後アプリが終了してしまうのですが、アプリが終了せずにMetaQuestProでVRTemplateをプレイできます。