Verfolgbarkeitsverlust in UnityTracking loss in Unity

Wenn das Gerät sich nicht auf der ganzen Welt finden kann, kann der APP-Verlust nachverfolgt werden.When the device can't locate itself in the world, the app experiences "tracking loss". Standardmäßig hält Unity die Update Schleife an und zeigt dem Benutzer jedes Mal ein Begrüßungs Bild an, wenn die Nachverfolgung verloren geht.By default, Unity will pause the update loop and display a splash image to the user anytime tracking is lost. Nachdem die Nachverfolgung wieder hergestellt wurde, wird das Begrüßungs Bild entfernt, und die Update-Schleife wird fortgesetzt.Once tracking is regained, the splash image goes away and the update loop continues.

Als Alternative kann der Benutzer diesen Übergang manuell durchführen, indem er die Einstellung auslässt.As an alternative, the user can manually handle this transition by opting out of the setting. Der gesamte Inhalt wird beim Nachverfolgen des Verlusts als Text gesperrt angezeigt, wenn er nicht verarbeitet wird.All content will seem to become body locked during tracking loss if nothing is done to handle it.

StandardbehandlungDefault Handling

Die Update Schleife und alle Meldungen und Ereignisse werden für die Dauer der standardmäßigen Nachverfolgung von Verlusten angehalten.The update loop and all messages and events will stop for the duration of tracking loss by default. Gleichzeitig wird dem Benutzer ein Bild angezeigt.At that same time, an image will be displayed to the user. Sie können dieses Bild anpassen, indem Sie zu Edit->Settings->Player wechseln, auf Begrüßungs Bild klicken und das Image der Holographic-nach Verfolgungs Verluste festlegen.You can customize this image by going to Edit->Settings->Player, clicking Splash Image, and setting the Holographic Tracking Loss image.

Manuelle BehandlungManual Handling

Um den nach Verfolgungs Verlust manuell zu behandeln, müssen Sie mit > Projekteinstellungen bearbeiten > > universelle Windows-Plattform Registerkarte "Einstellungen" > > Windows Holographic auf der Registerkarte "Einstellungen" die Option "bei Nachverfolgung von Verlusten anhalten und Bild anzeigen" deaktivieren.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". Danach müssen Sie die Nachverfolgung von Änderungen mit den unten angegebenen APIs verarbeiten.After which, you need to handle tracking changes with the APIs specified below.

Namespace: unityengine. XR. WSANamespace: UnityEngine.XR.WSA
Typ: worldmanagerType: WorldManager

  • World Manager macht ein Ereignis verfügbar, um die Nachverfolgung verlorener/ermittelter Objekte (worldmanager. onpositionzudnorstatechanged) und eine Eigenschaft zum Abfragen des aktuellen Zustands ("worldmanager. State") zu erkennen.World Manager exposes an event to detect tracking lost/gained (WorldManager.OnPositionalLocatorStateChanged) and a property to query the current state (WorldManager.state)
  • Wenn der Überwachungs Status nicht aktiv ist, wird die Kamera anscheinend nicht in der virtuellen Welt übersetzt, auch wenn der Benutzer Sie übersetzt.When the tracking state isn't active, the camera won't appear to translate in the virtual world even as the user translates. Objekte entsprechen keinem physischen Speicherort, und alle werden als gesperrt angezeigt.Objects will no longer correspond to any physical location and all will appear body locked.

Wenn Sie nach Verfolgungs Änderungen allein behandeln, müssen Sie entweder die State-Eigenschaft jedes Frames abrufen oder das onpositionzuonorstatechanged -Ereignis behandeln.When handling tracking changes on your own, you either need to poll for the state property each frame or handle the OnPositionalLocatorStateChanged event.

AbrufPolling

Der wichtigste Status ist positionzustatusorstate. Active, was bedeutet, dass die Nachverfolgung voll funktionsfähig ist.The most important state is PositionalLocatorState.Active, which means tracking is fully functional. Jeder andere Status führt nur zu Rotations Delta-zu-Haupt-Kameras.Any other state will result in only rotational deltas to the main camera. Beispiel: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;
    }
}

Behandeln des onpositiondeponorstatechanged-EreignissesHandling the OnPositionalLocatorStateChanged event

Bequemer ist, dass Sie onpositiondepingorstatechanged auch abonnieren können, um die Übergänge zu handhaben: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
    }
}

Siehe auchSee also