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