Persistenza nelle versioni precedenti di Unity

Se possibile, usare Strumenti di WorldAnchorStoreblocco globale anziché per il blocco globale permanente. Per Unity 2019/2020 con OpenXR o il plug-in XR Windows, usare ARAnchorManager. Per altre informazioni, vedere Scegliere l'approccio di blocco globale.

Questo articolo descrive come usare per la persistenza dell'ologramma WorldAnchorStore nelle versioni precedenti di Unity o nei progetti WSA.

Namespace:UnityEngine.XR.WSA.Persistence
Class:WorldAnchorStore

La funzionalità di persistenza in Unity crea esperienze olografiche in cui gli ologrammi rimangono in posizioni reali specifiche nelle istanze dell'applicazione. Gli utenti possono aggiungere singoli ologrammi ovunque desiderino e trovarli nello stesso punto in molte sessioni dell'app.

Rendere persistenti gli ologrammi tra le sessioni

consente WorldAnchorStore di rendere persistente la posizione degli ancoraggi del mondo tra le sessioni. Per rendere persistenti gli ologrammi tra le sessioni, tenere traccia separata di GameObjects che usano un particolare ancoraggio globale. È possibile creare una GameObject radice con un ancoraggio globale e ancorare gli ologrammi figlio con un offset di posizione locale.

Per caricare gli ologrammi dalle sessioni precedenti:

  1. Ottenere l'oggetto WorldAnchorStore.
  2. Caricare i dati dell'app di ancoraggio globale, che fornisce l'ID dell'ancoraggio globale.
  3. Caricare l'ancoraggio del mondo in base all'ID.

Per salvare gli ologrammi per le sessioni future:

  1. Ottenere l'oggetto WorldAnchorStore.
  2. Salvare un ancoraggio globale, specificando un ID.
  3. Salvare i dati dell'app correlati all'ancoraggio globale insieme all'ID.

Ottenere WorldAnchorStore

Mantenere un riferimento a WorldAnchorStore, in modo da sapere quando è pronto per eseguire un'operazione. Poiché questa chiamata è asincrona, non appena l'app viene avviata, è possibile chiamare:

WorldAnchorStore.GetAsync(StoreLoaded);

StoreLoaded è il gestore al termine del WorldAnchorStore caricamento:

private void StoreLoaded(WorldAnchorStore store)
{
       this.store = store;
}

È ora disponibile un riferimento a WorldAnchorStore, che è possibile usare per salvare e caricare ancoraggi di mondo specifici.

Salvare un ancoraggio del mondo

Per salvare un ancoraggio del mondo, denominare l'ancoraggio del mondo e passarlo nell'oggetto WorldAnchorStore precedente. Se si tenta di salvare due ancoraggi nella stessa stringa, store.Save restituisce false. Eliminare il salvataggio precedente prima di salvarlo nuovo.

private void SaveGame()
{
       // Save data about holograms that this world anchor positions
       if (!this.savedRoot) // Only save the root once
       {
              this.savedRoot = this.store.Save("rootGameObject", anchor);
              Assert(this.savedRoot);
       }
}

Caricare un ancoraggio globale

Per caricare un ancoraggio globale:

private void LoadGame()
{
       // Saved data about holograms that this world anchor positions:
       this.savedRoot = this.store.Load("rootGameObject", rootGameObject);
       if (!this.savedRoot)
       {
              // Game root not saved. Re-place objects or start over.
       }
}

È anche possibile usare store.Delete() per rimuovere un ancoraggio salvato in precedenza e store.Clear() per rimuovere tutti i dati salvati in precedenza.

Enumerare ancoraggi esistenti

Per elencare gli ancoraggi archiviati, chiamare GetAllIds.

string[] ids = this.store.GetAllIds();
for (int index = 0; index < ids.Length; index++)
{
        Debug.Log(ids[index]);
}

Rendere persistenti gli ologrammi per più dispositivi

È possibile usare Ancoraggi nello spazio di Azure per creare un ancoraggio cloud durevole da un ancoraggio locale. L'app può individuare l'ancoraggio cloud tra più dispositivi HoloLens, iOS e Android, anche se i dispositivi non sono insieme contemporaneamente. Poiché gli ancoraggi cloud sono persistenti, più dispositivi possono visualizzare il rendering del contenuto rispetto a tale ancoraggio nella stessa posizione fisica nel tempo.

Per iniziare a creare esperienze condivise in Unity, provare le guide introduttive di Azure Spatial Anchors Unity di cinque minuti. Una volta eseguiti con Ancoraggi nello spazio di Azure, è possibile creare e individuare ancoraggi in Unity.

Altri checkpoint di sviluppo

Continuare con i checkpoint di sviluppo di Unity.

Esplorare altri blocchi predefiniti Realtà mista principali:

Iniziare a esplorare le funzionalità e le API della piattaforma Realtà mista:

Vedi anche