Megosztás a következőn keresztül:


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

Lásd még