Veszteség nyomon követése a Unityben
Ha az eszköz nem találja magát a világon, az alkalmazás "veszteségkövetést" tapasztal. 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 ciklus folytatódik.
Másik lehetőségként a felhasználó manuálisan is kezelheti ezt az áttűnés kezelését a beállítás kikapcsolásával. Úgy tűnik, hogy minden tartalom törzs zárolva lesz a nyomkövetési veszteség során, ha semmit sem tesz annak kezeléséhez.
Alapértelmezett kezelés
A frissítési ciklus, valamint az összes üzenet és esemény alapértelmezés szerint leáll a veszteség nyomon követésének időtartamára. Ezzel egyidejűleg egy kép jelenik meg a felhasználó számára. A rendszerkép testreszabásához nyissa meg a Edit-Settings-Player>> lapot, kattintson a Splash Image elemre, és állítsa be a holografikus nyomkövetési veszteség képét.
Manuális kezelés
A veszteség nyomon követésének manuális kezeléséhez lépjen a Project Settings>Player> szerkesztése>Univerzális Windows-platform Beállítások lap Splash Image>Windows Holographic elemére>, és törölje a jelet a "Veszteség nyomon követése szünetelése és kép megjelenítése" jelölőnégyzetből. Ezt követően az alább megadott API-kkal kell kezelnie a változások nyomon követését.
Névtér: UnityEngine.XR.WSA
Típus: WorldManager
- A World Manager egy eseményt tesz közzé az elveszett/szerzett nyomkö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 a virtuális világban való fordításhoz, még akkor sem, amikor a felhasználó lefordítja. Az objektumok többé nem felelnek meg semmilyen fizikai helynek, és minden test zárolva jelenik meg.
Ha önállóan kezeli a változások követését, vagy le kell keresnie az állapottulajdonságot minden egyes keretben, vagy kezelnie kell az OnPositionalLocatorStateChanged eseményt .
ciklikus lekérdezések
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 esetén csak a fő kamera elforgatási eltérései lesznek. Példa:
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 előfizethet az OnPositionalLocatorStateChanged szolgáltatásra 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
}
}