Caricamento del contenuto del sistema scene - MRTK2
Tutte le operazioni di caricamento del contenuto sono asincrone e per impostazione predefinita tutto il caricamento del contenuto è aggiuntivo. Le scene di gestione e illuminazione non sono mai interessate dalle operazioni di caricamento del contenuto. Per informazioni sul monitoraggio dello stato di avanzamento del carico e dell'attivazione della scena, vedere Monitoraggio del caricamento del contenuto.
Caricamento del contenuto
Per caricare le scene di contenuto, usare il LoadContent
metodo:
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" });
Caricamento di una singola scena
L'equivalente di un singolo carico di scena può essere ottenuto tramite l'argomento facoltativo mode
. LoadSceneMode.Single
scarica prima di procedere con il caricamento tutte le scene di contenuto caricate.
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);
Caricamento successivo/precedente della scena
Il contenuto può essere caricato in modo singly in ordine di indice di compilazione. Questo è utile per la presentazione delle applicazioni che consentono agli utenti di usare un set di scene dimostrative uno per uno.
Si noti che il caricamento del contenuto successivo/prev usa LoadSceneMode.Single per impostazione predefinita per assicurarsi che il contenuto precedente venga scaricato.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested && sceneSystem.NextContentExists)
{
await sceneSystem.LoadNextContent();
}
if (prevSceneRequested && sceneSystem.PrevContentExists)
{
await sceneSystem.LoadPrevContent();
}
PrevContentExists
restituirà true se è presente almeno una scena di contenuto con un indice di compilazione inferiore rispetto all'indice di compilazione più basso attualmente caricato. NextContentExists
restituirà true se è presente almeno una scena di contenuto con un indice di compilazione superiore rispetto all'indice di compilazione più alto attualmente caricato.
Se l'argomento è true, il wrap
contenuto verrà eseguito nuovamente al primo/ultimo indice di compilazione. In questo modo viene rimossa la necessità di verificare la presenza di contenuto successivo/precedente:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested)
{
await sceneSystem.LoadNextContent(true);
}
if (prevSceneRequested)
{
await sceneSystem.LoadPrevContent(true);
}
Caricamento per tag
A volte è consigliabile caricare scene di contenuto in gruppi. Ad esempio, una fase di un'esperienza può essere composta da più scene, tutte le quali devono essere caricate simultaneamente per funzionare. Per facilitare questa operazione, è possibile contrassegnare le scene e quindi caricarle o scaricarle con tale tag.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Stage1");
// Wait until stage 1 is complete
await UnloadContentByTag("Stage1");
await LoadContentByTag("Stage2);
Il caricamento per tag può essere utile anche se gli artisti vogliono incorporare/rimuovere elementi da un'esperienza senza dover modificare gli script. Ad esempio, l'esecuzione di questo script con i due set di tag seguenti genera risultati diversi:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Terrain");
await LoadContentByTag("Structures");
await LoadContentByTag("Vegetation");
Test del contenuto
Nome scena | Tag scena | Caricato dallo script |
---|---|---|
DebugTerrainPhysics | Terreno | • |
StructureTesting | Strutture | • |
VegetationTools | Vegetazione | • |
Mountain | Terreno | • |
Cabina | Strutture | • |
Trees | Vegetazione | • |
Contenuto finale
Nome scena | Tag scena | Caricato dallo script |
---|---|---|
DebugTerrainPhysics | DoNotInclude | |
StructureTesting | DoNotInclude | |
VegetationTools | DoNotInclude | |
Mountain | Terreno | • |
Cabina | Strutture | • |
Trees | Vegetazione | • |
Comportamento dell'editor
È possibile eseguire tutte queste operazioni nell'editor e in modalità di riproduzione usando il controllo del servizio di Scene System. In modalità di modifica i caricamenti della scena saranno istantanei, mentre in modalità riproduzione è possibile osservare lo stato di avanzamento del caricamento e usare i token di attivazione.