Carga de contenido del sistema de escena: MRTK2

Todas las operaciones de carga de contenido son asincrónicas y, de forma predeterminada, toda la carga de contenido es suma. Las escenas de administrador e iluminación nunca se ven afectadas por las operaciones de carga de contenido. Para obtener información sobre la supervisión del progreso de carga y la activación de la escena, consulte Supervisión de la carga de contenido.

Carga de contenido

Para cargar escenas de contenido, use el 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" });

Carga de una sola escena

El equivalente de una sola carga de escena se puede lograr mediante el argumento opcional mode . LoadSceneMode.Single descargará primero todas las escenas de contenido cargadas antes de continuar con la 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);

Carga de la escena siguiente o anterior

El contenido se puede cargar de forma cansada en orden de compilación. Esto es útil para mostrar aplicaciones que llevan a los usuarios a través de un conjunto de escenas de demostración uno a uno.

Escenas actuales en la compilación en la configuración del reproductor

Tenga en cuenta que la carga de contenido siguiente o anterior usa LoadSceneMode.Single de forma predeterminada para asegurarse de que el contenido anterior se descarga.

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

if (nextSceneRequested && sceneSystem.NextContentExists)
{
    await sceneSystem.LoadNextContent();
}

if (prevSceneRequested && sceneSystem.PrevContentExists)
{
    await sceneSystem.LoadPrevContent();
}

PrevContentExists devolverá true si hay al menos una escena de contenido que tenga un índice de compilación inferior al índice de compilación más bajo cargado actualmente. NextContentExists devolverá true si hay al menos una escena de contenido que tenga un índice de compilación mayor que el índice de compilación más alto cargado actualmente.

Si el wrap argumento es true, el contenido volverá al índice de primera o última compilación. Esto elimina la necesidad de comprobar el contenido siguiente o anterior:

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

if (nextSceneRequested)
{
    await sceneSystem.LoadNextContent(true);
}

if (prevSceneRequested)
{
    await sceneSystem.LoadPrevContent(true);
}

Carga por etiqueta

Carga de escenas de contenido por etiqueta

A veces es conveniente cargar escenas de contenido en grupos. Por ejemplo, una fase de una experiencia se puede componer de varias escenas, todas las cuales deben cargarse simultáneamente para funcionar. Para facilitar esto, puede etiquetar las escenas y, a continuación, cargarlas o descargarlas con esa etiqueta.

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

await LoadContentByTag("Stage1");

// Wait until stage 1 is complete

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

La carga por etiqueta también puede ser útil si los artistas quieren incorporar o quitar elementos de una experiencia sin tener que modificar scripts. Por ejemplo, al ejecutar este script con los dos conjuntos de etiquetas siguientes se generan resultados diferentes:

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

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

Probar contenido

Nombre de la escena Etiqueta de escena Cargado por script
DebugTerrainPhysics Terreno
StructureTesting Estructuras
VegetationTools Vegetación
Mountain Terreno
Cabin Estructuras
Árboles Vegetación

Contenido final

Nombre de la escena Etiqueta de escena Cargado por script
DebugTerrainPhysics DoNotInclude
StructureTesting DoNotInclude
VegetationTools DoNotInclude
Mountain Terreno
Cabin Estructuras
Árboles Vegetación

Comportamiento del editor

Puede realizar todas estas operaciones en el editor y en modo de reproducción mediante el inspector de servicio del sistema de escena. En el modo de edición, las cargas de escena serán instantáneas, mientras que en el modo de reproducción puede observar el progreso de carga y usar tokens de activación.

Sistema de escena en el inspector con la carga de contenido resaltada