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.
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
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.