Laden von Szenensysteminhalten – MRTK2

Alle Vorgänge zum Laden von Inhalten sind asynchron, und standardmäßig erfolgt das Laden von Inhalten additiv. Manager- und Beleuchtungsszenen sind nie von Vorgängen zum Laden von Inhalten betroffen. Informationen zum Überwachen des Ladefortschritts und zur Szenenaktivierung finden Sie unter Überwachen des Ladens von Inhalten.

Laden von Inhalten

Verwenden Sie zum Laden von Inhaltsszenen die - LoadContent Methode:

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" });

Laden einzelner Szenen

Das Äquivalent einer einzelnen Szenenlast kann über das optionale mode Argument erreicht werden. LoadSceneMode.Single entlädt zunächst alle geladenen Inhaltsszenen, bevor mit dem Laden fortgefahren wird.

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);

Laden der nächsten/vorherigen Szene

Inhalte können in der Reihenfolge des Buildindexes einfach geladen werden. Dies ist nützlich für Showcase-Anwendungen, die Benutzer einzeln durch eine Reihe von Demonstrationsszenen führen.

Aktuelle Szenen im Build in den Playereinstellungen

Beachten Sie, dass beim Laden des nächsten/vorherigen Inhalts standardmäßig LoadSceneMode.Single verwendet wird, um sicherzustellen, dass der vorherige Inhalt entladen wird.

IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();

if (nextSceneRequested && sceneSystem.NextContentExists)
{
    await sceneSystem.LoadNextContent();
}

if (prevSceneRequested && sceneSystem.PrevContentExists)
{
    await sceneSystem.LoadPrevContent();
}

PrevContentExists gibt true zurück, wenn mindestens eine Inhaltsszene einen niedrigeren Buildindex aufweist als der derzeit unterste Buildindex. NextContentExists gibt true zurück, wenn mindestens eine Inhaltsszene einen höheren Buildindex aufweist als der derzeit höchste Buildindex.

Wenn das wrap Argument true ist, wird der Inhalt zurück zum ersten/letzten Buildindex ausgeführt. Dadurch entfällt die Notwendigkeit, nach dem nächsten/vorherigen Inhalt zu suchen:

IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();

if (nextSceneRequested)
{
    await sceneSystem.LoadNextContent(true);
}

if (prevSceneRequested)
{
    await sceneSystem.LoadPrevContent(true);
}

Laden nach Tag

Laden von Inhaltsszenen nach Tag

Manchmal ist es wünschenswert, Inhaltsszenen in Gruppen zu laden. Beispielsweise kann eine Phase einer Erfahrung aus mehreren Szenen bestehen, die alle gleichzeitig geladen werden müssen, um zu funktionieren. Um dies zu erleichtern, können Sie Ihre Szenen markieren und dann laden oder mit diesem Tag entladen.

IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();

await LoadContentByTag("Stage1");

// Wait until stage 1 is complete

await UnloadContentByTag("Stage1");
await LoadContentByTag("Stage2);

Das Laden nach Tag kann auch nützlich sein, wenn Künstler Elemente aus einer Benutzeroberfläche integrieren bzw. entfernen möchten, ohne Skripts ändern zu müssen. Für instance führt die Ausführung dieses Skripts mit den folgenden beiden Tags zu unterschiedlichen Ergebnissen:

IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();

await LoadContentByTag("Terrain");
await LoadContentByTag("Structures");
await LoadContentByTag("Vegetation");

Testen von Inhalten

Szenenname Szenentag Vom Skript geladen
DebugTerrainPhysics Gelände
StructureTesting Strukturen
VegetationTools Vegetation
Mountain Gelände
Cabin Strukturen
Strukturen Vegetation

Endgültiger Inhalt

Szenenname Szenentag Vom Skript geladen
DebugTerrainPhysics DoNotInclude
StructureTesting DoNotInclude
VegetationTools DoNotInclude
Mountain Gelände
Cabin Strukturen
Strukturen Vegetation

Editor-Verhalten

Sie können alle diese Vorgänge im Editor und im Wiedergabemodus ausführen, indem Sie den Dienstinspektor des Szenensystems verwenden. Im Bearbeitungsmodus erfolgt das Laden von Szenen sofort, während sie im Wiedergabemodus den Ladefortschritt beobachten und Aktivierungstoken verwenden können.

Szenensystem im Inspektor mit hervorgehobenem Laden von Inhalten