Rendere persistenti i sistemi di coordinate spaziali
In generale, i vantaggi delle funzionalità di persistenza degli strumenti di blocco globale sono di maggiore interesse rispetto ai dettagli della loro implementazione.
Questo articolo inizierà quindi con una descrizione delle esperienze abilitate dalla persistenza degli strumenti di blocco globale. Successivamente, si esaminerà come può essere gestita la persistenza dello stato degli strumenti di blocco globale. Si chiuderà quindi con una breve bozza dei dati salvati e caricati.
Strumenti di blocco globale tra sessioni
Come definito altrove, lo stato congelato è tutti i dati necessari per riprendere lo spazio stabile attualmente bloccato al mondo.
L'utilità principale della persistenza di World Locking Tools consiste nel consentire i vantaggi del lavoro di una sessione preliminare, l'analisi di un'area e l'allineamento dello spazio virtuale al mondo reale, da usare nelle sessioni successive.
Il ripristino di questo stato consente alle sessioni successive di rinunciare a una configurazione noiosa o dispendiosa in termini di tempo e passare direttamente all'esperienza focale.
Salvataggio dello stato degli strumenti di blocco globale
Prima di poterlo caricare, è necessario salvare lo stato bloccato.
Il modo più semplice per salvare lo stato bloccato consiste nell'abilitare il salvataggio automatico in World Locking Tools Manager, nel controllo Unity nel contesto degli strumenti di blocco globale o in fase di esecuzione tramite script.
L'impostazione dello stato di Gestione strumenti di blocco globale tramite script viene eseguita ottenendo prima lo stato, modificandolo in qualsiasi modo desiderato e quindi impostando lo stato come blocco. Ad esempio, per attivare o disattivare la funzionalità salvataggio automatico:
var settings = WorldLockingManger.GetInstance().Settings;
settings.AutoSave = !settings.AutoSave;
WorldLockingManager.GetInstance().Settings = settings;
Se la funzionalità salvataggio automatico passa da abilitata a disabilitata durante una sessione, non verrà eseguito alcun ulteriore salvataggio periodico. Se passa da disabilitato a abilitato, i salvataggi periodici verranno avviati o ripresi.
La funzionalità salvataggio automatico manterrà uno stato salvato aggiornato salvando periodicamente lo stato corrente in modo asincrono.
Se è necessario un maggiore controllo sulla tempistica del salvataggio dello stato, il salvataggio automatico può essere impostato su false e il salvataggio manuale può essere eseguito tramite script. Il salvataggio asincrono viene attivato facilmente, come segue:
WorldLockingManager.GetInstance().Save();
Poiché il salvataggio è asincrono, altri tentativi di richiamare Save()
mentre un salvataggio precedente è ancora in corso verranno ignorati.
Caricamento dello stato bloccato
Dopo aver salvato uno stato bloccato, potrebbe essere preferibile ricaricare gli strumenti di blocco globale in tale stato, in una sessione successiva o anche successiva nella stessa sessione.
Come si trova con il salvataggio dello stato bloccato, ci sono due percorsi per lo stato di caricamento.
Se il flag AutoLoad in World Locking Tools Manager è abilitato, qualsiasi stato salvato precedente verrà caricato in fase di avvio. Se non è stato salvato per il caricamento, non viene generato alcun errore e l'avvio procede come se il flag non fosse impostato.
L'impostazione del flag AutoLoad da false a true (ad esempio tramite script) in fase di esecuzione non avrà alcun effetto. Il caricamento automatico avviene al caricamento iniziale o non avviene affatto.
Tuttavia, un caricamento può essere avviato dallo script in qualsiasi momento tramite la funzione load di World Locking Tools Manager:
WorldLockingManager.GetInstance().Load();
Come con Il salvataggio, il caricamento viene eseguito in modo asincrono. Tutte le chiamate successive a Load mentre è ancora in corso verranno ignorate.
Cosa viene salvato?
I dati necessari per ricostruire il mapping degli strumenti di blocco globale, ovvero l'allineamento del mondo virtuale al mondo reale, possono essere suddivisi in quattro gruppi.
Ancoraggi nello spazio: la rete sottostante di ancoraggi nello spazio creata e gestita internamente da World Locking Tools' Anchor Manager fornisce l'associazione necessaria al mondo reale. Tali ancoraggi vengono mantenuti tramite il meccanismo di archiviazione sottostante della piattaforma.
Stato del motore: lo stato del motore è persistente per consentire al motore di riprendere il mapping corrente. Il ripristino di questo stato rimuove tali indeterminacie come la posizione iniziale della testa nelle sessioni precedenti.
Blocco dello spazio: se l'applicazione ha applicato ulteriori puntini di spazio per forzare l'allineamento delle coordinate di modellazione al mondo reale in un set discreto di punti, tale mapping viene mantenuto anche.
Spazio delle coordinate: gli strumenti di blocco globale salvano in modo permanente lo spazio delle coordinate rispetto al mondo fisico salvando un grafico interno di ancoraggi nello spazio locale.
Cosa non viene salvato?
Impostazioni non vengono salvati e Gli strumenti di blocco globale non salvano o ripristinano singoli oggetti applicazione. Viene salvato solo lo stato. Tutte le modifiche di configurazione apportate dall'applicazione, ad esempio le modifiche apportate tramite l'API WorldLockingManager, vengono reimpostate sui valori impostati in Unity Inspector ogni volta che l'applicazione viene avviata. In alternativa, se non sono impostati in Inspector, vengono impostati sui valori predefiniti nel codice.
Si supponga, ad esempio, che l'applicazione voglia presentare all'utente l'opzione AutoSave World Locking state e che la preferenza dell'utente venga mantenuta tra le sessioni fino a quando non viene modificata. L'applicazione deve quindi:
- Presentare all'utente l'esperienza utente per l'impostazione della preferenza salvataggio automatico (presumibilmente con altre impostazioni dell'applicazione).
- Inoltrare la preferenza dell'utente a WorldLockingManager.
- Registrare la preferenza per il file (presumibilmente con altre impostazioni dell'applicazione).
- All'avvio dell'applicazione caricare la preferenza salvata (se disponibile) e inoltrare a WorldLockingManager.
Vedere le note in WorldLockingContext relative ai problemi di intervallo durante la combinazione dell'impostazione dello stato tra asset e script.