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.

Current scenes in build in player settings

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

Loading content scenes by 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.

Scene system in the inspector with content loading highlighted