Carregamento de conteúdo do sistema de cena – MRTK2
Todas as operações de carregamento de conteúdo são assíncronas e, por padrão, todo o carregamento de conteúdo é aditivo. O gerenciador e as cenas de iluminação nunca são afetados por operações de carregamento de conteúdo. Para obter informações sobre como monitorar o progresso da carga e a ativação da cena, consulte Monitoramento do carregamento de conteúdo.
Carregando conteúdo
Para carregar cenas de conteúdo, use 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 por meio do argumento opcional mode
. LoadSceneMode.Single
primeiro descarregará todas as cenas de conteúdo carregadas 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);
Carregamento da cena seguinte/anterior
O conteúdo pode ser carregado em ordem de índice de build. Isso é útil para mostrar aplicativos que levam os usuários por meio de um conjunto de cenas de demonstração um por um.
Observe que o carregamento de conteúdo próximo/pré-desenvolvimento usa LoadSceneMode.Single por padrão para garantir que o conteúdo anterior seja descarregado.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested && sceneSystem.NextContentExists)
{
await sceneSystem.LoadNextContent();
}
if (prevSceneRequested && sceneSystem.PrevContentExists)
{
await sceneSystem.LoadPrevContent();
}
PrevContentExists
retornará true se houver pelo menos uma cena de conteúdo que tenha um índice de build menor do que o índice de build mais baixo carregado no momento. NextContentExists
retornará true se houver pelo menos uma cena de conteúdo que tenha um índice de build maior do que o índice de build mais alto carregado no momento.
Se o argumento for true, o wrap
conteúdo fará um loop de volta para o primeiro/último índice de build. Isso elimina a necessidade de marcar para o conteúdo anterior/seguinte:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested)
{
await sceneSystem.LoadNextContent(true);
}
if (prevSceneRequested)
{
await sceneSystem.LoadPrevContent(true);
}
Carregando por marca
Às vezes, é desejável carregar cenas de conteúdo em grupos. Por exemplo, um estágio de uma experiência pode ser composto por várias cenas, todas elas devem ser carregadas simultaneamente para funcionar. Para facilitar isso, você pode marcar suas cenas e carregá-las ou descarregá-las com essa marca.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Stage1");
// Wait until stage 1 is complete
await UnloadContentByTag("Stage1");
await LoadContentByTag("Stage2);
Carregar por marca também pode ser útil se os artistas quiserem incorporar/remover elementos de uma experiência sem precisar modificar scripts. Por exemplo, executar esse script com os dois conjuntos de marcas a seguir produz resultados diferentes:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Terrain");
await LoadContentByTag("Structures");
await LoadContentByTag("Vegetation");
Testar conteúdo
Nome da Cena | Marca de cena | Carregado por script |
---|---|---|
DebugTerrainPhysics | Terreno | • |
StructureTesting | Estruturas | • |
VegetationTools | Vegetação | • |
Mountain | Terreno | • |
Cabine | Estruturas | • |
Árvores | Vegetação | • |
Conteúdo final
Nome da Cena | Marca de cena | Carregado por script |
---|---|---|
DebugTerrainPhysics | DoNotInclude | |
StructureTesting | DoNotInclude | |
VegetationTools | DoNotInclude | |
Mountain | Terreno | • |
Cabine | Estruturas | • |
Árvores | Vegetação | • |
Comportamento do editor
Você pode executar todas essas operações no editor e no modo de reprodução usando 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 você poderá observar o progresso do carregamento e usar tokens de ativação.