Térbeli koordinátarendszerek megőrzése

Általánosságban elmondható, hogy a World Locking Tools adatmegőrzési képességeinek előnyei fontosabbak, mint a megvalósításuk részletei.

Ez a cikk tehát a World Locking Tools adatmegőrzés által lehetővé tott élmények ismertetésével kezdődik. Ezt követően megnézzük, hogyan kezelhető a World Locking Tools State Persistence. Ezt követően rövid vázlatot készítünk arról, hogy milyen adatok vannak mentve és betöltve.

World Locking Tools a munkamenetek között

Máshol meghatározottak szerint a Zárolt állam minden adat, amely a világ jelenlegi zárolt stabil területének folytatásához szükséges.

A World Locking Tools adatmegőrzésének elsődleges előnye, hogy lehetővé teszi az előzetes munkamenetek munkájának előnyeit, egy terület vizsgálatát és a virtuális térnek a való világhoz való igazítását a későbbi munkamenetekben való használathoz.

Ennek az állapotnak a helyreállítása lehetővé teszi a későbbi munkamenetek számára, hogy lemondjanak a fárasztó vagy időigényes beállításról, és egyenesen a fókuszba kerülhessenek.

A zárolási eszközök állapotának mentése

A betöltés előtt menteni kell a zárolt állapotot.

A fagyasztott állapot mentésének legegyszerűbb módja az automatikus mentés engedélyezése a World Locking Tools Managerben, a Unity felügyelőjében a World Locking Tools-környezetben, vagy futásidőben szkripttel.

A World Locking Tools Manager állapotának parancsfájlon keresztüli beállításához először le kell kapnia az állapotot, módosítania kell bármilyen módon, majd vissza kell állítania az állapotot blokkként. Például az Automatikus mentés funkció váltása:

var settings = WorldLockingManger.GetInstance().Settings;
settings.AutoSave = !settings.AutoSave;
WorldLockingManager.GetInstance().Settings = settings;

Ha az Automatikus mentés funkció engedélyezettről letiltott állapotba kerül egy munkamenet során, a rendszer nem kísérel meg további rendszeres mentéseket. Ha letiltottról engedélyezettre változik, az időszakos mentések elkezdődnek vagy folytatódnak.

Az Automatikus mentés funkció az aktuális állapot rendszeres aszinkron mentésével naprakészen tartja a mentett állapotot.

Ha nagyobb mértékben szabályozni kell az állapot mentésének időzítését, akkor előfordulhat, hogy az automatikus mentés false (hamis) értékre van állítva, és a manuális mentés szkripttel is elvégezhető. Az aszinkron mentés egyszerűen aktiválható, mivel:

WorldLockingManager.GetInstance().Save();

Mivel a mentés aszinkron, a rendszer figyelmen kívül hagyja a korábbi mentés közbeni meghívási Save() kísérleteket.

Befagyasztott állapot betöltése

A zárolt állapot mentése után kívánatos lehet a World Locking Tools újbóli betöltése ebbe az állapotba, akár egy későbbi munkamenetben, akár később, ugyanabban a munkamenetben.

Amint azt a Fagyasztott állapot mentésekor találjuk, a betöltési állapotnak két elérési útja van.

Ha a World Locking Tools Manager automatikus betöltési jelzője engedélyezve van, akkor a korábbi mentett állapotok az indításkor töltődnek be. Ha nincs betöltendő mentett állapot, nem jön létre hiba, és az indítás úgy folytatódik, mintha nem lett volna beállítva a jelző.

Az Automatikus betöltés jelző false értékről true értékre (például szkripten keresztül) való beállítása futásidőben nem lesz hatással. Az Automatikus betöltés vagy a kezdeti betöltéskor történik, vagy egyáltalán nem történik meg.

A World Locking Tools Manager Load függvényén keresztül azonban bármikor indítható terhelés szkriptből:

WorldLockingManager.GetInstance().Load();

A Mentéshez hasonlóan a betöltés aszinkron módon történik. A rendszer figyelmen kívül hagyja azokat a további hívásokat, amikor még folyamatban van a betöltés.

Mit ment a rendszer?

A World Locking Tools leképezésének rekonstruálásához szükséges adatok – vagyis a virtuális világnak a való világhoz való igazítása – négy csoportra bonthatók.

  • Spatial Anchors: A World Locking Tools Anchor Manager által belsőleg létrehozott és karbantartott térbeli horgonyok mögöttes hálózata biztosítja a szükséges kötést a való világhoz. Ezek a horgonyok a platform mögöttes tárolási mechanizmusán keresztül maradnak meg.

  • Motor állapota: A motor állapota megmarad, így a motor folytathatja az aktuális leképezést. Az állapot visszaállítása eltávolítja azokat a meghatározhatatlanságokat, mint az előző munkamenet(ek) fejének kezdeti póza.

  • Térbeli rögzítés: Ha az alkalmazás további szóközöket alkalmazott a modellezési koordináták a valós világra való igazításának kényszerítésére egy különálló pontkészleten, akkor a leképezés is megmarad.

  • Koordináta-tér: A világzárolási eszközök megőrzik a fizikai világhoz viszonyított koordinátateret a helyi térbeli horgonyok belső gráfjának mentésével.

Mi nincs mentve?

A rendszer nem menti a beállításokat, és a World Locking Tools nem menti vagy állítja vissza az egyes alkalmazásobjektumokat. A rendszer csak az állapotot menti. Az alkalmazás konfigurációs módosításai – például a WorldLockingManager API-val végrehajtott módosítások – az alkalmazás minden indításakor alaphelyzetbe állnak a Unity Inspectorben beállított értékekre. Vagy ha nincsenek beállítva az Inspectorben, akkor a kódban az alapértelmezett értékükre lesznek beállítva.

Tegyük fel például, hogy az alkalmazás be szeretné mutatni a felhasználónak az Automatikus mentési világzárolási állapot lehetőséget, és a felhasználó beállításai a munkamenetek között megmaradnak a módosításig. Ezután az alkalmazásnak a következőket kell tennie:

  1. Az Automatikus mentés beállítás beállításához (feltehetően más alkalmazásbeállításokkal) mutassa be a felhasználót a felhasználói felületen.
  2. Továbbítsa a felhasználó beállításait a WorldLockingManagernek.
  3. Jegyezze fel a fájlbeállításokat (feltehetően más alkalmazásbeállításokkal).
  4. Az alkalmazás indításakor töltse be a mentett beállításokat (ha vannak mentettek), és továbbítja a WorldLockingManagernek.

Tekintse meg a WorldLockingContextben az állapotbeállítások eszközök és szkriptek közötti keverésével kapcsolatos időzítési problémákról szóló megjegyzéseit.

Lásd még