Carregamento de conteúdos do sistema de cenários – MRTK2
Todas as operações de carregamento de conteúdos são assíncronas e, por predefinição, todo o carregamento de conteúdos é aditivo. As cenas de gestor e iluminação nunca são afetadas pelas operações de carregamento de conteúdos. Para obter informações sobre como monitorizar o progresso da carga e a ativação de cenas, veja Monitorizar o Carregamento de Conteúdos.
A carregar conteúdo
Para carregar cenas de conteúdo, utilize o LoadContent
método :
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
// Additively load a single content scene
await sceneSystem.LoadContent("MyContentScene");
// Additively load a set of content scenes
await sceneSystem.LoadContent(new string[] { "MyContentScene1", "MyContentScene2", "MyContentScene3" });
Carregamento de cena única
O equivalente a uma única carga de cena pode ser obtido através do argumento opcional mode
. LoadSceneMode.Single
primeiro, descarregará todas as cenas de conteúdo carregadas antes de continuar com a carga.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
// ContentScene1, ContentScene2 and ContentScene3 will be loaded additively
await sceneSystem.LoadContent("ContentScene1");
await sceneSystem.LoadContent("ContentScene2");
await sceneSystem.LoadContent("ContentScene3");
// ContentScene1, ContentScene2 and ContentScene3 will be unloaded
// SingleContentScene will be loaded additively
await sceneSystem.LoadContent("SingleContentScene", LoadSceneMode.Single);
Carregamento de cena seguinte/anterior
O conteúdo pode ser carregado por ordem de índice de compilação. Isto é útil para mostrar aplicações que levam os utilizadores através de um conjunto de cenas de demonstração um a um.
Tenha em atenção que o carregamento de conteúdos seguinte/anterior utiliza LoadSceneMode.Single por predefinição para garantir que o conteúdo anterior é descarregado.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested && sceneSystem.NextContentExists)
{
await sceneSystem.LoadNextContent();
}
if (prevSceneRequested && sceneSystem.PrevContentExists)
{
await sceneSystem.LoadPrevContent();
}
PrevContentExists
irá devolver verdadeiro se existir pelo menos uma cena de conteúdo que tenha um índice de compilação inferior ao índice de compilação mais baixo atualmente carregado. NextContentExists
irá devolver verdadeiro se existir, pelo menos, uma cena de conteúdo que tenha um índice de compilação superior ao índice de compilação mais elevado atualmente carregado.
Se o wrap
argumento for verdadeiro, o conteúdo voltará ao primeiro/último índice de compilação. Isto remove a necessidade de verificar o conteúdo seguinte/anterior:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested)
{
await sceneSystem.LoadNextContent(true);
}
if (prevSceneRequested)
{
await sceneSystem.LoadPrevContent(true);
}
Carregar por etiqueta
Por vezes, é desejável carregar cenas de conteúdo em grupos. Por exemplo, uma fase de uma experiência pode ser composta por várias cenas, todas elas têm de ser carregadas simultaneamente para funcionar. Para facilitar esta tarefa, pode etiquetar os seus cenários e, em seguida, carregá-los ou descarregá-los com essa etiqueta.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Stage1");
// Wait until stage 1 is complete
await UnloadContentByTag("Stage1");
await LoadContentByTag("Stage2);
Carregar por etiqueta também pode ser útil se os artistas quiserem incorporar/remover elementos de uma experiência sem terem de modificar scripts. Por exemplo, a execução deste script com os dois conjuntos de etiquetas seguintes produz resultados diferentes:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Terrain");
await LoadContentByTag("Structures");
await LoadContentByTag("Vegetation");
Testar conteúdo
Nome da Cena | Etiqueta de Cena | Carregado por script |
---|---|---|
DebugTerrainPhysics | Terreno | • |
StructureTesting | estruturas | • |
VegetationTools | Vegetação | • |
Montanha | Terreno | • |
Cabine | estruturas | • |
Árvores | Vegetação | • |
Conteúdo final
Nome da Cena | Etiqueta de Cena | Carregado por script |
---|---|---|
DebugTerrainPhysics | DoNotInclude | |
StructureTesting | DoNotInclude | |
VegetationTools | DoNotInclude | |
Montanha | Terreno | • |
Cabine | estruturas | • |
Árvores | Vegetação | • |
Comportamento do editor
Pode efetuar todas estas operações no editor e no modo de reprodução com o inspetor de serviços do Sistema de Cenas. No modo de edição, as cargas de cena serão instantâneas, enquanto no modo de reprodução pode observar o progresso do carregamento e utilizar tokens de ativação.