Persistenza in UnityPersistence in Unity

Spazio dei nomi: UnityEngine. XR. WSA. PersistenceNamespace: UnityEngine.XR.WSA.Persistence
Classe: WorldAnchorStoreClass: WorldAnchorStore

WorldAnchorStore è la chiave per la creazione di esperienze olografiche in cui gli ologrammi mantengono posizioni reali specifiche tra le istanze dell'applicazione.The WorldAnchorStore is the key to creating holographic experiences where holograms stay in specific real world positions across instances of the application. Gli utenti possono quindi aggiungere singoli ologrammi ovunque si trovino e trovarli più avanti nello stesso punto rispetto a molti utilizzi dell'app.Users can then pin individual holograms wherever they want, and find them later in the same spot over many uses of your app.

Come salvare in modo permanente gli ologrammi tra le sessioniHow to persist holograms across sessions

Il WorldAnchorStore consentirà di rendere permanente il percorso di WorldAnchor tra le sessioni.The WorldAnchorStore will allow you to persist the location of WorldAnchor's across sessions. Per rendere effettivamente permanente gli ologrammi tra le sessioni, è necessario tenere traccia separatamente dei GameObject che usano un particolare ancoraggio mondiale.To actually persist holograms across sessions, you'll need to separately keep track of your GameObjects that use a particular world anchor. Spesso è opportuno creare una radice GameObject con un ancoraggio globale e avere elementi figlio olografici ancorati con un offset della posizione locale.It often makes sense to create a GameObject root with a world anchor and have children holograms anchored by it with a local position offset.

Per caricare gli ologrammi dalle sessioni precedenti:To load holograms from previous sessions:

  1. Ottenere il WorldAnchorStoreGet the WorldAnchorStore
  2. Caricare i dati dell'app correlati all'ancoraggio globale, che fornisce l'ID dell'ancoraggio globaleLoad app data relating to the world anchor, which gives you the ID of the world anchor
  3. Caricare un ancoraggio globale dall'IDLoad a world anchor from its ID

Per salvare gli ologrammi per le sessioni future:To save holograms for future sessions:

  1. Ottenere il WorldAnchorStoreGet the WorldAnchorStore
  2. Salva un ancoraggio globale specificando un IDSave a world anchor specifying an ID
  3. Salva i dati dell'app correlati all'ancoraggio globale insieme a un IDSave app data relating to the world anchor along with an ID

Recupero di WorldAnchorStoreGetting the WorldAnchorStore

È consigliabile tenere un riferimento a WorldAnchorStore in modo da essere a conoscenza quando è pronto per eseguire un'operazione.You'll want to keep a reference to the WorldAnchorStore so you know when it's ready to perform an operation. Poiché si tratta di una chiamata asincrona, potenzialmente non appena viene avviata, si vuole chiamare:Since this is an async call, potentially as soon as start up, you want to call:

WorldAnchorStore.GetAsync(StoreLoaded);

StoreLoaded in questo caso è il gestore per il completamento del caricamento di WorldAnchorStore:StoreLoaded in this case is our handler for when the WorldAnchorStore has completed loading:

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

È ora disponibile un riferimento a WorldAnchorStore, che verrà usato per salvare e caricare specifici ancoraggi internazionali.We now have a reference to the WorldAnchorStore, which we'll use to save and load specific World Anchors.

Salvataggio di un WorldAnchorSaving a WorldAnchor

Per salvare, è sufficiente assegnare un nome a quello che si sta salvando e passarlo nel WorldAnchor ottenuto in precedenza quando si desidera salvare.To save, we simply need to name what we are saving and pass it in the WorldAnchor we got before when we want to save. Nota: il tentativo di salvare due ancoraggi nella stessa stringa avrà esito negativo (Store. Il salvataggio restituirà false.Note: trying to save two anchors to the same string will fail (store.Save will return false). Eliminare il salvataggio precedente prima di salvare quello nuovo:Delete the previous save before saving the new one:

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

Caricamento di un WorldAnchorLoading a WorldAnchor

E per caricare:And to load:

private void LoadGame()
{
       // Save data about holograms positioned by this world anchor
       this.savedRoot = this.store.Load("rootGameObject", rootGameObject);
       if (!this.savedRoot)
       {
              // We didn't actually have the game root saved! We have to re-place our objects or start over
       }
}

È inoltre possibile utilizzare Store. Eliminare () per rimuovere un ancoraggio precedentemente salvato e archiviato. Deselezionare () per rimuovere tutti i dati salvati in precedenza.We additionally can use store.Delete() to remove an anchor we previously saved and store.Clear() to remove all previously saved data.

Enumerazione degli ancoraggi esistentiEnumerating Existing Anchors

Per individuare gli ancoraggi precedentemente archiviati, chiamare GetAllIds.To discover previously stored anchors, call GetAllIds.

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

Mantenimento degli ologrammi per più dispositiviPersisting holograms for multiple devices

È possibile usare gli ancoraggi spaziali di Azure per creare un ancoraggio cloud durevole da un WorldAnchor locale, che può essere individuato dall'app su più dispositivi HoloLens, iOS e Android, anche se questi dispositivi non sono presenti contemporaneamente.You can use Azure Spatial Anchors to create a durable cloud anchor from a local WorldAnchor, which your app can then locate across multiple HoloLens, iOS and Android devices, even if those devices aren't present together at the same time. Poiché gli ancoraggi cloud sono persistenti, più dispositivi nel tempo possono visualizzare il contenuto di cui è stato eseguito il rendering rispetto a tale ancoraggio nella stessa posizione fisica.Because cloud anchors are persistent, multiple devices over time can each see content rendered relative to that anchor in the same physical location.

Per iniziare a creare esperienze condivise in Unity, provare le guide introduttive Unity Anchors di Azuredi 5 minuti.To get started building shared experiences in Unity, try out the 5-minute Azure Spatial Anchors Unity quickstarts.

Quando si è operativi con i Anchor spaziali di Azure, è possibile creare e individuare ancoraggi in Unity.Once you're up and running with Azure Spatial Anchors, you can then create and locate anchors in Unity.

Successivo checkpoint di sviluppoNext Development Checkpoint

Se si sta seguendo il percorso di checkpoint per lo sviluppo di Unity, è possibile esplorare i blocchi predefiniti di base della realtà mista.If you're following the Unity development checkpoint journey we've laid out, you're in the midst of exploring the Mixed Reality core building blocks. Da qui è possibile passare al blocco predefinito successivo:From here, you can continue to the next building block:

In alternativa, passare alle API e alle funzionalità della piattaforma di realtà mista:Or jump to Mixed Reality platform capabilities and APIs:

È sempre possibile tornare ai checkpoint per lo sviluppo con Unity in qualsiasi momento.You can always go back to the Unity development checkpoints at any time.

Vedere ancheSee Also