開発

アプリのライフサイクルの処理

更新日時: 2026/07/23
Horizon OSを使用するMeta VRデバイスの開発を成功させるには、HorizonOSから送信されるライフサイクルイベントを理解する必要があります。Horizonストアでリリースするには、没入型アプリはライフサイクルイベントに対応する必要があります(VRC.Quest.Functional.2およびVRC.Quest.Input.4による要件)。ライフサイクルイベントに正しく対応することで、ユーザー体験を向上させることができます。

フォーカスの状態

アプリの一時停止

アプリの一時停止イベントは、入力のシミュレーション、レンダリング、受け入れをアプリが停止する必要があるときに、Horizon OSから送信されます。これらのイベントは、まだアプリがOSによって読み込まれている状態にあるものの、ユーザーからは見えず、操作もできない状態になったときに発生します。アプリは、一時停止されたユーザーによるインタラクションを許可しないようにします。詳しくはVRC.Quest.Functional.2を参照してください。
これらのイベントを受信するには、UnityのビルトインMonoBehaviour.OnApplicationPause(bool pauseStatus)⁠関数を使用します。

入力フォーカス

Horizon OSは複数のアプリの同時実行をサポートできます。例えば、没入型ゲームをプレイしているユーザーは、ウォークスルーの2Dブラウザーウィンドウをプレイ中に表示させておくことがあります。このシナリオでは、ブラウザーウィンドウと没入型ゲームの両方がユーザーに表示されますが、ユーザー入力に応答するアプリは1つのみです。ユーザーが他のアプリに入力を送信しようとすると、それを検知したHorizon OSは、フォーカスを失うアプリとフォーカスを得るアプリ(妥当な場合)に対して、入力フォーカスイベントを送信します。
入力フォーカスを失ったアプリは、トラッキングされたコントローラー/ジェスチャーのレンダリングを停止し、すべての入力を無視する必要があります(VRC.Quest.Input.4をご覧ください)。ただし、入力フォーカスを失ったときに、オーディオ、レンダリング、シミュレーションがどうなるのかについては、アプリ開発者が決めることができます。例えば、シングルプレイヤーのアクションゲームでは、入力フォーカスを失ったときにすべてを一時停止し、没入型動画プレイヤーでは、動画再生を続行できます。
これらのイベントを受信するには、OVRManager.InputFocusAcquiredイベントとOVRManager.InputFocusLostイベントをサブスクライブするか、OVRManager.hasInputFocusプロパティをポーリングします。または、UnityのビルトインMonoBehaviour.OnApplicationFocus(bool hasFocus)⁠関数を使用します。

HMDのマウント/マウント解除

HMDのマウントイベントとマウント解除イベントは、ユーザーが実際にヘッドセットを装着したり外したりしたときに送信されます。ヘッドセットがマウント解除されると、ユーザーがすぐにヘッドセットを再マウントしない限り、[Settings (設定)] > [Power (電源)] > [Auto Sleep (オートスリープ)]で設定された時間が経過した後にアプリの一時停止イベントが送信されます。
これらのイベントに対応することはVRCの要件ではありませんが、アプリによっては、マウント解除時に一時停止メニューを表示したり、ユーザーを非アクティブとしてマークしたりすることが望ましい場合があります。
これらのイベントを受信するには、OVRManager.HMDMountedイベントとOVRManager.HMDUnmountedイベントをサブスクライブします。

アプリのライフサイクル

Unityアプリケーションは、Horizon OSから送信される以下の一般的なイベントをリッスンまたはチェックできます。

アプリの開始

アプリが初期化されたとき:
  • HMD Mounted
  • Input Focus Acquired

HMDを外してすぐに装着する

ユーザーがHMDを外し、すぐに装着し直す場合
  • HMDを外したとき: HMDUnmounted
  • HMDを装着し直したとき: HMDMounted

HMDを外し、しばらくしてから装着する

ユーザーがHMDを外し、[Settings (設定)] > [Power (電源)] > [Auto Sleep (オートスリープ)]で設定した時間が経過してから、再び装着する
  • HMDを外したとき: HMDUnmounted
  • 設定時間の経過後:
    • Input Focus Lost
    • Application Paused
  • HMDを装着し直したとき:
    • HMD Mounted
    • Application Unpaused
    • Input Focus Acquired

電源ボタンを押してディスプレイをオフにする

  • Application Paused
  • Input Focus Lost

電源ボタンを押してディスプレイをオンにする

  • Application Unpaused
  • Input Focus Acquired

ユニバーサルメニューを開く

  • ユニバーサルメニューを開いたとき:
    • Input Focus Lost
  • ユーザーが[Resume (再開)]を選択したとき、またはユニバーサルメニューを閉じたとき:
  • Input Focus Acquired