Partilhar via


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.

Cenas atuais na compilação nas definições do leitor

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

Carregar cenas de conteúdo 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.

Sistema de cenários no inspetor com o carregamento de conteúdos realçado