Veszteség nyomon követése a Unityben

Ha az eszköz nem találja magát a világon, az alkalmazás a "veszteség nyomon követését" tapasztalja. Alapértelmezés szerint a Unity szünetelteti a frissítési ciklust, és megjeleníti a kezdőképet a felhasználónak, amikor a nyomon követés elveszik. A nyomon követés visszanyerése után a kezdőkép eltűnik, és a frissítési hurok folytatódik.

Másik lehetőségként a felhasználó manuálisan is kezelheti ezt az áttűnést a beállítás letiltásával. Úgy tűnik, hogy minden tartalom törzs zárolva lesz a nyomon követés elvesztése során, ha nem történik semmi a kezeléshez.

Alapértelmezett kezelés

A frissítési hurok és az összes üzenet és esemény alapértelmezés szerint leáll a veszteség nyomon követésének időtartamára. Ezzel egy időben egy kép jelenik meg a felhasználó számára. Ezt a képet testreszabhatja, ha a Szerkesztés-Beállítások-Lejátszó>> területre kattint, a Kezdőkép elemre kattint, és beállítja a Holographic Tracking Loss rendszerképet.

Manuális kezelés

A veszteség nyomon követésének manuális kezeléséhez nyissa meg aProjektbeállítások>lejátszójának>szerkesztése>Univerzális Windows-platform beállítások lapKezdőkép>Windows Holographic elemét>, és törölje a jelet a "Nyomon követés veszteségének szüneteltetése és kép megjelenítése" jelölőnégyzetből. Ezután kezelnie kell a változások követését az alább megadott API-kkal.

Névtér:UnityEngine.XR.WSA
Típus:WorldManager

  • A World Manager közzétesz egy eseményt az elveszett/szerzett nyomon követés észleléséhez (WorldManager.OnPositionalLocatorStateChanged) és egy tulajdonságot az aktuális állapot lekérdezéséhez (WorldManager.state)
  • Ha a nyomkövetési állapot nem aktív, a kamera nem jelenik meg fordításnak a virtuális világban, még akkor sem, ha a felhasználó lefordítja. Az objektumok többé nem felelnek meg egyetlen fizikai helynek sem, és minden test zároltként jelenik meg.

Ha önállóan kezeli a változások követését, le kellkérdeznie az egyes keretek állapottulajdonságát, vagy kezelnie kell az OnPositionalLocatorStateChanged eseményt .

Ciklikus lekérdezés

A legfontosabb állapot a PositionalLocatorState.Active, ami azt jelenti, hogy a nyomkövetés teljes mértékben működőképes. Bármely más állapot csak a fő kamerára történő forgatási különbözeteket eredményezi. Például:

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;
    }
}

Az OnPositionalLocatorStateChanged esemény kezelése

Kényelmesebben feliratkozhat az OnPositionalLocatorStateChanged elemre is az áttűnések kezeléséhez:

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
    }
}

Lásd még