損失の Unity での追跡Tracking loss in Unity

デバイスは、世界で自体を見つけられない、アプリで"追跡損失"が発生します。When the device cannot locate itself in the world, the app experiences "tracking loss". 既定では、Unity は更新ループを一時停止し、ユーザーにロゴ イメージを表示します。By default, Unity will pause the update loop and display a splash image to the user. 追跡を回復すると、ときに、ロゴ イメージは表示されなくなり、update ループが続行されます。When tracking is regained, the splash image goes away and the update loop continues.

代わりに、ユーザーはこの遷移を設定を無効にすることによって手動で処理できます。As an alternative, the user can manually handle this transition by opting out of the setting. すべてのコンテンツは、損失の場合はそれを処理するために何も実行が追跡中にロックされている本文になるようです。All content will seem to become body locked during tracking loss if nothing is done to handle it.

既定の処理Default Handling

既定では、アプリだけでなく、すべてのメッセージおよびイベントの更新ループは損失の追跡の間停止します。By default, the update loop of the app as well as all messages and events will stop for the duration of tracking loss. 同時に、ユーザーにイメージが表示されます。At that same time, an image will be displayed to the user. このイメージをカスタマイズするには、編集する]-> [設定]、[Player、ロゴのイメージをクリックし、Holographic 損失の追跡のイメージを設定します。You can customize this image by going to Edit->Settings->Player, clicking Splash Image, and setting the Holographic Tracking Loss image.

手動処理Manual Handling

追跡の損失を手動で処理するに移動する必要があります編集 > プロジェクト設定 > Player > ユニバーサル Windows プラットフォームの設定 タブ > スプラッシュ イメージ > Windows Holographic "の追跡が失われる一時停止し、イメージの表示をオフにします。".To manually handle tracking loss, you need to go to Edit > Project Settings > Player > Universal Windows Platform settings tab > Splash Image > Windows Holographic and uncheck "On Tracking Loss Pause and Show Image". その後、以下で指定した Api を使用した変更の追跡を処理する必要があります。After which, you need to handle tracking changes with the APIs specified below.

名前空間: UnityEngine.XR.WSANamespace: UnityEngine.XR.WSA
種類: WorldManagerType: WorldManager

  • 追跡の紛失/獲得を検出するためにイベントを公開する世界マネージャー (WorldManager.OnPositionalLocatorStateChanged) と現在の状態を照会するプロパティ (WorldManager.state)World Manager exposes an event to detect tracking lost/gained (WorldManager.OnPositionalLocatorStateChanged) and a property to query the current state (WorldManager.state)
  • 追跡の状態がアクティブでない場合、ユーザーに変換しても、仮想世界に変換する、カメラは表示されません。When the tracking state is not active, the camera will not appear to translate in the virtual world even as the user translates. つまり、オブジェクトは、物理的な場所に一致しなくなると、ロックされている本文をすべて表示されます。This means objects will no longer correspond to any physical location and all will appear body locked.

各フレームまたはハンドルの state プロパティをポーリングする必要がありますか、独自の変更の追跡を処理するときに、 OnPositionalLocatorStateChangedイベント。When handling tracking changes on your own you either need to poll for the state property each frame or handle the OnPositionalLocatorStateChanged event.

ポーリングPolling

最も重要な状態がPositionalLocatorState.Active追跡は完全に機能することを意味します。The most important state is PositionalLocatorState.Active which means tracking is fully functional. その他の状態が、メイン カメラに回転差分のみ発生します。Any other state will result in only rotational deltas to the main camera. 例:For example:

void Update()
{
    switch (UnityEngine.XR.WSA.WorldManager.state)
    {
        case PositionalLocatorState.Active:
            // handle active
            break;
        case PositionalLocatorState.Activating:
        case PositionalLocatorState.Inhibited:
        case PositionalLocatorState.OrientationOnly:
        case PositionalLocatorState.Unavailable:
        default:
            // only rotational information is available
            break;
    }
}

OnPositionalLocatorStateChanged イベントを処理します。Handling the OnPositionalLocatorStateChanged event

サブスクライブできますもまたはしより便利なOnPositionalLocatorStateChanged遷移を処理するために。Alternatively and more conveniently, you can also subscribe to OnPositionalLocatorStateChanged to handle the transitions:

void Start()
{
    UnityEngine.XR.WSA.WorldManager.OnPositionalLocatorStateChanged += WorldManager_OnPositionalLocatorStateChanged;
}

private void WorldManager_OnPositionalLocatorStateChanged(PositionalLocatorState oldState, PositionalLocatorState newState)
{
    if (newState == PositionalLocatorState.Active)
    {
        // Handle becoming active
    }
    else
    {
        // Handle becoming rotational only
    }
}

関連項目See also