Chargement du contenu du système de scène — MRTK2

Toutes les opérations de chargement de contenu sont asynchrones et, par défaut, tous les chargements de contenu sont additifs. Les scènes de gestionnaire et d’éclairage ne sont jamais affectées par les opérations de chargement de contenu. Pour plus d’informations sur la surveillance de la progression du chargement et de l’activation de la scène, consultez Supervision du chargement du contenu.

Chargement du contenu

Pour charger des scènes de contenu, utilisez la LoadContent méthode :

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" });

Chargement d’une scène unique

L’équivalent d’une charge de scène unique peut être obtenu via l’argument facultatif mode . LoadSceneMode.Single décharge d’abord toutes les scènes de contenu chargées avant de poursuivre le chargement.

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);

Chargement de la scène suivante/précédente

Le contenu peut être chargé séparément dans l’ordre de génération de l’index. Cela est utile pour présenter des applications qui guident les utilisateurs à travers un ensemble de scènes de démonstration une par une.

Scènes actuelles dans les paramètres de build dans le lecteur

Notez que le chargement du contenu suivant/précédent utilise LoadSceneMode.Single par défaut pour garantir que le contenu précédent est déchargé.

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

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

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

PrevContentExists retourne true s’il existe au moins une scène de contenu qui a un index de build inférieur à l’index de build le plus bas actuellement chargé. NextContentExists retourne true s’il existe au moins une scène de contenu dont l’index de build est supérieur à l’index de build le plus élevé actuellement chargé.

Si l’argument a la wrap valeur true, le contenu revient en boucle au premier/dernier index de build. Cela supprime la nécessité d’case activée pour le contenu suivant/précédent :

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

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

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

Chargement par balise

Chargement des scènes de contenu par balise

Il est parfois souhaitable de charger des scènes de contenu dans des groupes. Par exemple, une étape d’une expérience peut être composée de plusieurs scènes, qui doivent toutes être chargées simultanément pour fonctionner. Pour faciliter cela, vous pouvez étiqueter vos scènes, puis les charger ou les décharger avec cette balise.

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

await LoadContentByTag("Stage1");

// Wait until stage 1 is complete

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

Le chargement par balise peut également être utile si les artistes souhaitent incorporer/supprimer des éléments d’une expérience sans avoir à modifier les scripts. Par instance, l’exécution de ce script avec les deux ensembles de balises suivants produit des résultats différents :

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

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

Tester le contenu

Nom de la scène Balise de scène Chargé par script
DebugTerrainPhysics Terrain
StructureTesting Structures
VegetationTools Végétation
Mountain Terrain
Cabin Structures
Arborescences Végétation

Contenu final

Nom de la scène Balise de scène Chargé par script
DebugTerrainPhysics DoNotInclude
StructureTesting DoNotInclude
VegetationTools DoNotInclude
Mountain Terrain
Cabin Structures
Arborescences Végétation

Comportement de l’éditeur

Vous pouvez effectuer toutes ces opérations en mode éditeur et lecture à l’aide de l’inspecteur de service du système de scène. En mode édition, les chargements de scène sont instantanés, tandis qu’en mode lecture, vous pouvez observer la progression du chargement et utiliser des jetons d’activation.

Système de scène dans l’inspecteur avec chargement du contenu mis en surbrillance