Carga de contenido del sistema de escenaScene system content loading

Todas las operaciones de carga de contenido son asincrónicas y, de forma predeterminada, toda la carga de contenido es aditiva.All content load operations are asynchronous, and by default all content loading is additive. Las escenas de iluminación y administrador nunca se ven afectadas por las operaciones de carga de contenido.Manager and lighting scenes are never affected by content loading operations. Para obtener información sobre cómo supervisar el progreso de la carga y la activación de la escena, vea Supervisión de la carga de contenido.For information about monitoring load progress and scene activation, see Monitoring Content Loading.

Carga de contenidoLoading content

Para cargar escenas de contenido, use el LoadContent método :To load content scenes use the LoadContent method:

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 escenaSingle scene loading

El equivalente de una carga de escena única se puede lograr a través del argumento mode opcional.The equivalent of a single scene load can be achieved via the optional mode argument. LoadSceneMode.Single primero descargará todas las escenas de contenido cargadas antes de continuar con la carga.LoadSceneMode.Single will first unload all loaded content scenes before proceeding with the load.

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 anteriorNext / previous scene loading

El contenido se puede cargar de forma singly en orden de índice de compilación.Content can be singly loaded in order of build index. Esto es útil para presentar aplicaciones que llevan a los usuarios a través de un conjunto de escenas de demostración una a una.This is useful for showcase applications that take users through a set of demonstration scenes one-by-one.

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

Tenga en cuenta que la siguiente carga de contenido o anterior usa LoadSceneMode.Single de forma predeterminada para asegurarse de que se descarga el contenido anterior.Note that next / prev content loading uses LoadSceneMode.Single by default to ensure that the previous content is unloaded.

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 con un índice de compilación inferior al índice de compilación más bajo cargado actualmente.PrevContentExists will return true if there is at least one content scene that has a lower build index than the lowest build index currently loaded. 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.NextContentExists will return true if there is at least one content scene that has a higher build index than the highest build index currently loaded.

Si el wrap argumento es true, el contenido volverá al primer y último índice de compilación.If the wrap argument is true, content will loop back to the first / last build index. Esto elimina la necesidad de comprobar el contenido siguiente o anterior:This removes the need to check for next / previous content:

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

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

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

Carga por etiquetaLoading by tag

Carga de escenas de contenido por etiqueta

A veces es conveniente cargar escenas de contenido en grupos.It's sometimes desirable to load content scenes in groups. Por ejemplo, una fase de una experiencia puede estar formada por varias escenas, todas las cuales deben cargarse simultáneamente para funcionar.Eg, a stage of an experience may be composed of multiple scenes, all of which must be loaded simultaneously to function. Para facilitar esto, puede etiquetar las escenas y, a continuación, cargarlas o descargarlas con esa etiqueta.To facilitate this, you can tag your scenes and then load them or unload them with that tag.

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 intérpretes quieren incorporar o quitar elementos de una experiencia sin tener que modificar scripts.Loading by tag can also be useful if artists want to incorporate / remove elements from an experience without having to modify scripts. Por ejemplo, la ejecución de este script con los dos conjuntos de etiquetas siguientes produce resultados diferentes:For instance, running this script with the following two sets of tags produces different results:

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

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

Prueba de contenidoTesting content

Nombre de la escenaScene Name Etiqueta de escenaScene Tag Cargado por scriptLoaded by script
DebugXiainPhysicsDebugTerrainPhysics TerrenoTerrain
StructureTestingStructureTesting EstructurasStructures
DeserciónToolsVegetationTools VegetaciónVegetation
MountainMountain TerrenoTerrain
CabinCabin EstructurasStructures
ÁrbolesTrees VegetaciónVegetation

Contenido finalFinal content

Nombre de la escenaScene Name Etiqueta de escenaScene Tag Cargado por scriptLoaded by script
DebugXiainPhysicsDebugTerrainPhysics DoNotIncludeDoNotInclude
StructureTestingStructureTesting DoNotIncludeDoNotInclude
DeserciónToolsVegetationTools DoNotIncludeDoNotInclude
MountainMountain TerrenoTerrain
CabinCabin EstructurasStructures
ÁrbolesTrees VegetaciónVegetation

Comportamiento del editorEditor behavior

Puede realizar todas estas operaciones en el editor y en modo de reproducción mediante el inspector de servicio del sistema de escena.You can perform all these operations in editor and in play mode by using the Scene System's service inspector. 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 la carga y usar tokens de activación.In edit mode scene loads will be instantaneous, while in play mode you can observe loading progress and use activation tokens.

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