Caricamento del contenuto del sistema della scena - 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 del carico e sull'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 caricamento della scena può essere ottenuto tramite l'argomento facoltativo mode
. LoadSceneMode.Single
prima di procedere con il caricamento, scarica 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 ordine di indice di compilazione. Ciò è utile per presentare le applicazioni che portano gli utenti attraverso un set di scene dimostrative una alla sola.
Si noti che per impostazione predefinita il caricamento del contenuto successivo/prev usa LoadSceneMode.Single 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 del contenuto con un indice di compilazione inferiore rispetto all'indice di compilazione più basso attualmente caricato. NextContentExists
restituirà true se è presente almeno una scena del contenuto con un indice di compilazione superiore rispetto all'indice di compilazione più alto attualmente caricato.
Se l'argomento wrap
è true, il contenuto tornerà 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 in base al tag
A volte è consigliabile caricare scene di contenuto in gruppi. Ad esempio, una fase di un'esperienza può essere costituita da più scene, che devono essere caricate contemporaneamente 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 in base al 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 produce 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. I caricamenti della scena in modalità di modifica saranno istantanei, mentre in modalità di riproduzione è possibile osservare lo stato di caricamento e usare i token di attivazione.