Persistencia en UnityPersistence in Unity

Espacio de nombres: UnityEngine. XR. WSA. PersistenceNamespace: UnityEngine.XR.WSA.Persistence
Clase: WorldAnchorStoreClass: WorldAnchorStore

WorldAnchorStore es la clave para crear experiencias holográficas en las que los hologramas permanecen en posiciones específicas del mundo real entre instancias de la aplicación.The WorldAnchorStore is the key to creating holographic experiences where holograms stay in specific real world positions across instances of the application. Después, los usuarios pueden anclar los hologramas individuales dondequiera que quieran y encontrarlos más adelante en el mismo punto en muchos usos de la aplicación.Users can then pin individual holograms wherever they want, and find them later in the same spot over many uses of your app.

Cómo conservar los hologramas entre sesionesHow to persist holograms across sessions

El WorldAnchorStore le permitirá conservar la ubicación de los WorldAnchor de las sesiones.The WorldAnchorStore will allow you to persist the location of WorldAnchor's across sessions. Para conservar los hologramas en todas las sesiones, deberá realizar un seguimiento por separado de los GameObjects que usan un delimitador mundial determinado.To actually persist holograms across sessions, you'll need to separately keep track of your GameObjects that use a particular world anchor. A menudo tiene sentido crear una raíz GameObject con un delimitador mundial y tener los hologramas secundarios anclados por él con un desplazamiento de posición local.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.

Para cargar hologramas de sesiones anteriores:To load holograms from previous sessions:

  1. Obtención de WorldAnchorStoreGet the WorldAnchorStore
  2. Cargar datos de la aplicación relacionados con el anclaje mundial, que le proporciona el identificador del anclaje mundialLoad app data relating to the world anchor, which gives you the ID of the world anchor
  3. Carga de un delimitador mundial desde su identificadorLoad a world anchor from its ID

Para guardar los hologramas para las sesiones futuras:To save holograms for future sessions:

  1. Obtención de WorldAnchorStoreGet the WorldAnchorStore
  2. Guardar un delimitador mundial especificando un identificadorSave a world anchor specifying an ID
  3. Guardar datos de la aplicación relacionados con el delimitador mundial junto con un identificadorSave app data relating to the world anchor along with an ID

Obtención de WorldAnchorStoreGetting the WorldAnchorStore

Querrá mantener una referencia a WorldAnchorStore para que sepa cuándo está listo para realizar una operación.You'll want to keep a reference to the WorldAnchorStore so you know when it's ready to perform an operation. Dado que se trata de una llamada asincrónica, posiblemente en cuanto se inicia, desea llamar a:Since this is an async call, potentially as soon as start up, you want to call:

WorldAnchorStore.GetAsync(StoreLoaded);

En este caso, StoreLoaded es el controlador para cuando se haya completado la carga de WorldAnchorStore:StoreLoaded in this case is our handler for when the WorldAnchorStore has completed loading:

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

Ahora tenemos una referencia a WorldAnchorStore, que usaremos para guardar y cargar delimitadores del mundo específicos.We now have a reference to the WorldAnchorStore, which we'll use to save and load specific World Anchors.

Guardar un WorldAnchorSaving a WorldAnchor

Para ahorrar, simplemente necesitamos asignar un nombre a lo que estamos guardando y pasarlo en el WorldAnchor que obtuvimos antes cuando queremos ahorrar.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: Si intenta guardar dos delimitadores en la misma cadena, se producirá un error (Store. Save devolverá FALSE).Note: trying to save two anchors to the same string will fail (store.Save will return false). Elimine el guardado anterior antes de guardar el nuevo: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);
       }
}

Carga de un WorldAnchorLoading a WorldAnchor

Y para cargar: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
       }
}

Además, podemos usar Store. Elimine () para quitar un delimitador que se guardó y almacenó anteriormente. Borre () para quitar todos los datos guardados previamente.We additionally can use store.Delete() to remove an anchor we previously saved and store.Clear() to remove all previously saved data.

Enumerar delimitadores existentesEnumerating Existing Anchors

Para detectar los delimitadores almacenados previamente, llame a 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]);
}

Persistencia de hologramas para varios dispositivosPersisting holograms for multiple devices

Puede usar los anclajes espaciales de Azure para crear un delimitador de la nube durable desde un WorldAnchor local, que la aplicación puede ubicar a continuación en varios dispositivos HoloLens, iOS y Android, incluso si dichos dispositivos no están presentes juntos al mismo tiempo.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. Dado que los delimitadores en la nube son persistentes, varios dispositivos a lo largo del tiempo pueden ver el contenido representado en relación con ese delimitador en la misma ubicación física.Because cloud anchors are persistent, multiple devices over time can each see content rendered relative to that anchor in the same physical location.

Para empezar a crear experiencias compartidas en Unity, pruebe las guías de Inicio rápidode 5 minutos de anclaje espacial de Azure.To get started building shared experiences in Unity, try out the 5-minute Azure Spatial Anchors Unity quickstarts.

Una vez que esté en funcionamiento con los anclajes espaciales de Azure, puede crear y buscar delimitadores en Unity.Once you're up and running with Azure Spatial Anchors, you can then create and locate anchors in Unity.

Siguiente punto de control de desarrolloNext Development Checkpoint

Si está siguiendo el viaje de punto de control de desarrollo de Unity que hemos diseñado, está en medio de explorar los bloques de creación principales de realidad mixta.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. Desde aquí, puede continuar con el siguiente bloque de compilación:From here, you can continue to the next building block:

O bien puede saltar a las funcionalidades y las API de la plataforma de realidad mixta:Or jump to Mixed Reality platform capabilities and APIs:

Puede volver a los puntos de control de desarrollo de Unity en cualquier momento.You can always go back to the Unity development checkpoints at any time.

Consulte tambiénSee Also