Carregamento de conteúdo do sistema de cena


Comportamento do editor

Pode executar todas estas operações em editor e em modo de jogo utilizando o inspetor de serviço do Sistema de Cena. 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 fichas de ativação.

Sistema de cena no inspetor com carregamento de conteúdo em destaque

Todas as operações de carga de conteúdo são assíncronos e, por padrão, todos os carregamentos de conteúdo são aditivos. As cenas de gestão e iluminação nunca são afetadas por operações de carregamento de conteúdos. Para obter informações sobre a monitorização do progresso da carga e a ativação da cena, consulte o Carregamento de Conteúdos de Monitorização.

Conteúdo de carregamento

Para carregar as 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 alcançado através do mode argumento opcional. LoadSceneMode.Single primeiro descarregará todas as cenas de conteúdo carregado antes de prosseguir 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);

Próximo / anterior carregamento de cena

O conteúdo pode ser carregado singly por ordem de índice de construção. Isto é útil para aplicações de exibição que levam os utilizadores através de um conjunto de cenas de demonstração um a um.

Cenas atuais na construção nas configurações dos jogadores

Note que a próxima carregamento de conteúdo /prev utiliza LoadSceneMode.Single por padrã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 vai voltar verdadeiro se houver pelo menos uma cena de conteúdo que tenha um índice de construção inferior ao índice de construção mais baixo atualmente carregado. NextContentExists vai voltar verdadeiro se houver pelo menos uma cena de conteúdo que tenha um índice de construção mais alto do que o índice de construção mais alto atualmente carregado.

Se o wrap argumento for verdadeiro, o conteúdo voltará ao primeiro/último índice de construção. Isto elimina 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);
}

Carregamento por etiqueta

Carregar cenas de conteúdo por etiqueta

Às vezes é desejável carregar cenas de conteúdo em grupos. Por exemplo, um palco de uma experiência pode ser composto por múltiplas cenas, todas elas devem ser carregadas simultaneamente para funcionar. Para facilitar isto, pode marcar as suas cenas e depois carregá-las ou descarregá-las com essa etiqueta.

IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();

await LoadContentByTag("Stage1");

// Wait until stage 1 is complete

await UnloadContentByTag("Stage1");
await LoadContentByTag("Stage2);

O carregamento por etiqueta também pode ser útil se os artistas quiserem incorporar/remover elementos de uma experiência sem ter que modificar scripts. Por exemplo, executar este script com os seguintes dois conjuntos de tags produz resultados diferentes:

IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();

await LoadContentByTag("Terrain");
await LoadContentByTag("Structures");
await LoadContentByTag("Vegetation");

Conteúdo de teste

Nome da cena Tag de cena Carregado por script
DebugTerrainPhysics Terreno
EstruturaTamento estruturas
VegetaçãoTois Vegetação
Montanha Terreno
Cabana estruturas
Árvores Vegetação

Conteúdo final

Nome da cena Tag de cena Carregado por script
DebugTerrainPhysics DoNotInclude
EstruturaTamento DoNotInclude
VegetaçãoTois DoNotInclude
Montanha Terreno
Cabana estruturas
Árvores Vegetação