Zachování prostorových souřadnicových systémů
Obecně platí, že výhody funkcí trvalosti nástroje World Locking Tools mají větší zájem než podrobnosti o jejich implementaci.
Tento článek proto začne diskuzí o prostředích, které umožňuje trvalost nástrojů World Locking Tools. Potom se podíváme na to, jak se může spravovat trvalost stavových nástrojů World Locking Tools. Pak se zavřeme stručným skicam, která data se uloží a načtou.
Nástroje world locking tools napříč relacemi
Jak je definováno jinde, Zmrazený stát je všechna data potřebná k obnovení aktuálního světem uzamčeného stabilního prostoru.
Primárním nástrojem trvalost nástroje World Locking Tools je umožnit výhody předběžné relace práce, skenování oblasti a sladění virtuálního prostoru s reálným světem, aby se použily v následných relacích.
Obnovení tohoto stavu umožňuje následným relacím předcházet zdlouhavé nebo časově náročné nastavení a dostat se přímo do zaměření.
Ukládání stavu nástroje World Locking Tools
Před načtením musí být stav ukotvení uložen.
Nejjednodušší způsob, jak uložit ukotvený stav, je povolit automatické ukládání ve Správci nástrojů World Locking Tools, buď v inspektoru Unity v kontextu nástroje World Locking Tools, nebo za běhu prostřednictvím skriptu.
Nastavení stavu Správce nástrojů World Locking prostřednictvím skriptu se provádí tak, že nejprve získá stav, změní ho libovolným požadovaným způsobem a pak nastaví stav zpět jako blok. Pokud například chcete přepnout funkci automatického ukládání:
var settings = WorldLockingManger.GetInstance().Settings;
settings.AutoSave = !settings.AutoSave;
WorldLockingManager.GetInstance().Settings = settings;
Pokud funkce automatického ukládání přejde z povoleného na zakázáno během relace, nebudou se pokoušet žádné další pravidelné ukládání. Pokud přejde z zakázaného na povolenou, začnou nebo obnoví se pravidelné ukládání.
Funkce automatického ukládání bude udržovat aktuální uložený stav pravidelným uložením aktuálního stavu asynchronně.
Pokud je vyžadována větší kontrola nad načasováním uložení stavu, může být automatické ukládání nastaveno na false a ruční ukládání je možné provést pomocí skriptu. Asynchronní ukládání se snadno aktivuje takto:
WorldLockingManager.GetInstance().Save();
Vzhledem k tomu, že uložení je asynchronní, ostatní pokusy o vyvolání Save()
, zatímco předchozí uložení stále probíhá, budou ignorovány.
Načítání zablokovaný stav
Když jste uložili ukotvený stav, může být žádoucí znovu načíst nástroje World Locking Tools zpět do tohoto stavu, a to buď v následné relaci, nebo dokonce později ve stejné relaci.
Jak zjistíme s uložením Zamrzlého stavu, existují dvě cesty pro načtení stavu.
Pokud je povolen příznak automatického načítání ve Správci nástrojů World Locking Tools, všechny předchozí uložené stavy se načtou při spuštění. Pokud se nenačte žádný uložený stav, nevygeneruje se žádná chyba a spuštění pokračuje, jako by příznak nebyl nastaven.
Nastavení příznaku automatického načítání z hodnoty false na true (například prostřednictvím skriptu) za běhu nebude mít žádný vliv. Automatické načítání se buď stane při počátečním načtení, nebo se vůbec nestane.
Načtení však může být inicializováno ze skriptu kdykoli prostřednictvím funkce Načítání nástroje World Locking Tools Manager:
WorldLockingManager.GetInstance().Load();
Stejně jako u možnosti Uložit se zatížení provádí asynchronně. Všechna následná volání načíst, zatímco jedna stále probíhá, budou ignorována.
Co se uloží?
Data potřebná k rekonstrukci mapování nástroje World Locking Tools – to znamená, že zarovnání virtuálního světa do skutečného světa je možné rozdělit do čtyř skupin.
Spatial Anchors: Základní síť prostorových ukotvení vytvořených a udržovaných interně správcem ukotvení nástroje World Locking Tools poskytuje požadovaná vazba na skutečný svět. Tyto kotvy se uchovávají prostřednictvím základního mechanismu úložiště platformy.
Stav motoru: Stav motoru je trvalý, aby mohl modul pokračovat v jeho aktuálním mapování. Obnovením tohoto stavu se takové nedeterminacies odeberou jako počáteční pozice hlavy v předchozích relacích.
Připnutí mezery: Pokud aplikace použila jakékoli další špendlíky mezer k vynucení zarovnání souřadnic modelování do reálného světa v diskrétní sadě bodů, mapování se také zachová.
Souřadnicový prostor: Nástroje pro uzamčení světa zachová souřadnicový prostor vzhledem k fyzickému světu uložením interního grafu místních prostorových ukotvení.
Co se neuloží?
Nastavení nejsou uloženy a nástroje World Locking Tools neukládají ani neobnoví jednotlivé objekty aplikace. Uloží se pouze stav. Všechny změny konfigurace aplikace – například změny provedené prostřednictvím rozhraní API WorldLockingManager – se resetují na hodnoty nastavené v Unity Inspectoru při každém spuštění aplikace. Nebo pokud nejsou nastavené v inspektoru, jsou nastavené na výchozí hodnoty v kódu.
Řekněme například, že aplikace chce prezentovat uživatele s možností automatického ukládání stavu uzamčení světa a zachovat předvolbu uživatele mezi relacemi, dokud se nezmění. Aplikace pak musí:
- Prezentujte uživatele s uživatelským rozhraním pro nastavení předvolby automatického ukládání (pravděpodobně s jinými nastaveními aplikace).
- Předáte předvolbu uživatele správci WorldLockingManager.
- Zaznamenejte předvolbu pro soubor (pravděpodobně s jinými nastaveními aplikace).
- Při spuštění aplikace načtěte uloženou předvolbu (pokud byla uložena) a přejděte na WorldLockingManager.
Přečtěte si poznámky v tématu WorldLockingContext týkající se problémů s časováním při kombinování nastavení stavu mezi prostředky a skripty.