Persistência na Unidade

Espaço de nome:UnityEngine.XR.WSA.Persistence
Classe:WorldAnchorStore

A WorldAnchorStore é a chave para criar experiências holográficas onde os hologramas permanecem em posições específicas do mundo real em todos os casos da aplicação. Os utilizadores podem então fixar hologramas individuais onde quiserem, e encontrá-los mais tarde no mesmo local sobre muitas utilizações da sua app.

Como persistir hologramas em sessões

A WorldAnchorStore permitir-lhe-á persistir na localização das sessões do WorldAnchor. Para realmente persistir hologramas em sessões, terás de acompanhar separadamente os teus GameObjects que usam uma âncora mundial em particular. Muitas vezes faz sentido criar uma raiz GameObject com uma âncora mundial e ter hologramas infantis ancorados por ele com uma posição local compensada.

Para carregar hologramas de sessões anteriores:

  1. Pegue a WorldAnchorStore
  2. Carregue os dados da aplicação relativas à âncora mundial, o que lhe dá o ID da âncora mundial
  3. Carregue uma âncora mundial a partir do seu ID

Para guardar hologramas para futuras sessões:

  1. Pegue a WorldAnchorStore
  2. Salve uma âncora mundial especificando um ID
  3. Guarde os dados da aplicação relativos à âncora mundial juntamente com um ID

Obter a WorldAnchorStore

Vai querer manter uma referência à WorldAnchorStore para saber quando está pronto para uma operação. Uma vez que esta é uma chamada de async, potencialmente assim que começar, você quer ligar:

WorldAnchorStore.GetAsync(StoreLoaded);

StoreLoaded neste caso é o nosso manipulador para quando a WorldAnchorStore tiver concluído o carregamento:

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

Temos agora uma referência à WorldAnchorStore, que usaremos para poupar e carregar âncoras mundiais específicas.

Salvar um WorldAnchor

Para salvar, precisamos simplesmente de nomear o que estamos a poupar e passá-lo no WorldAnchor que temos antes quando queremos salvar. Nota: tentar guardar duas âncoras para a mesma corda falhará (armazenar. A save vai devolver falso). Elimine a poupança anterior antes de guardar a nova:

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);
       }
}

Carregar um WorldAnchor

E carregar:

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
       }
}

Além disso, podemos usar a loja. Excluir() para remover uma âncora que guardamos e armazenamos anteriormente. Limpe() para remover todos os dados previamente guardados.

Enumerando âncoras existentes

Para descobrir âncoras previamente armazenadas, ligue para GetAllIds.

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

Hologramas persistentes para vários dispositivos

Pode utilizar âncoras espaciais Azure para criar uma âncora de nuvem durável a partir de um WorldAnchor local, que a sua aplicação pode então localizar em vários dispositivos HoloLens, iOS e Android, mesmo que esses dispositivos não estejam presentes juntos ao mesmo tempo. Como as âncoras de nuvem são persistentes, vários dispositivos ao longo do tempo podem ver o conteúdo tornado em relação a essa âncora no mesmo local físico.

Para começar a construir experiências partilhadas na Unidade, experimente os rápidos de 5 minutos da Azure Spatial Anchors Unitity.

Uma vez que esteja a funcionar com âncoras espaciais Azure, pode então criar e localizar âncoras na Unidade.

Próximo checkpoint de desenvolvimento

Se estás a seguir a jornada de controlo de desenvolvimento da Unidade que estabelecemos, estás no meio de explorar os blocos de construção da Realidade Mista. A partir daqui, pode continuar até ao próximo bloco de construção:

Ou saltar para as capacidades da plataforma de realidade mista e APIs:

Pode sempre voltar aos postos de controlo de desenvolvimento da Unidade a qualquer momento.

Consulte também