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 la 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 primero descargará 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 singly 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.

Current scenes in build in player settings

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 argumento es true, el wrap contenido volverá al primer o último índice de compilación. Esto quita 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

Loading content scenes by tag

A veces, es conveniente cargar escenas de contenido en grupos. Por ejemplo, una fase de una experiencia puede estar compuesta 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, la ejecución de este script con los dos conjuntos de etiquetas siguientes genera resultados diferentes:

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

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

Prueba de contenido

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

Contenido final

Nombre de la escena Etiqueta de escena Cargado por script
DepurarTerrainPhysics DoNotInclude
StructureTesting DoNotInclude
VegetaciónTools 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 modo de reproducción puede observar el progreso de carga y usar tokens de activación.

Scene system in the inspector with content loading highlighted