Condividi tramite


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.

Scene correnti nella compilazione nelle impostazioni del lettore

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

Caricamento di scene di contenuto 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.

Sistema della scena nel controllo con caricamento del contenuto evidenziato