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