Ładowanie zawartości systemu sceny — MRTK2
Wszystkie operacje ładowania zawartości są asynchroniczne, a domyślnie cały ładowanie zawartości jest addytywne. Operacje ładowania zawartości nigdy nie mają wpływu na operacje ładowania zawartości. Aby uzyskać informacje na temat monitorowania postępu ładowania i aktywacji sceny, zobacz Monitorowanie ładowania zawartości.
Ładowanie zawartości
Aby załadować sceny zawartości, użyj LoadContent
metody :
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" });
Ładowanie pojedynczej sceny
Odpowiednik obciążenia pojedynczej sceny można osiągnąć za pomocą opcjonalnego mode
argumentu. LoadSceneMode.Single
Program najpierw zwolni wszystkie załadowane sceny zawartości przed kontynuowaniem ładowania.
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);
Ładowanie następnej/poprzedniej sceny
Zawartość może być ładowana wielokrotnie w kolejności indeksu kompilacji. Jest to przydatne w przypadku prezentowania aplikacji, które zabierają użytkowników przez zestaw scen demonstracyjnych jeden po drugim.
Pamiętaj, że ładowanie następnej/wstępnej zawartości domyślnie używa funkcji LoadSceneMode.Single, aby upewnić się, że poprzednia zawartość została zwolniona.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested && sceneSystem.NextContentExists)
{
await sceneSystem.LoadNextContent();
}
if (prevSceneRequested && sceneSystem.PrevContentExists)
{
await sceneSystem.LoadPrevContent();
}
PrevContentExists
Funkcja zwróci wartość true, jeśli istnieje co najmniej jedna scena zawartości, która ma niższy indeks kompilacji niż najniższy indeks kompilacji aktualnie załadowany. NextContentExists
Funkcja zwróci wartość true, jeśli istnieje co najmniej jedna scena zawartości, która ma wyższy indeks kompilacji niż najwyższy indeks kompilacji aktualnie załadowany.
wrap
Jeśli argument ma wartość true, zawartość powróci do pierwszego/ostatniego indeksu kompilacji. Spowoduje to usunięcie konieczności sprawdzenia następnej/poprzedniej zawartości:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
if (nextSceneRequested)
{
await sceneSystem.LoadNextContent(true);
}
if (prevSceneRequested)
{
await sceneSystem.LoadPrevContent(true);
}
Ładowanie według tagu
Czasami pożądane jest załadowanie scen zawartości w grupach. Na przykład etap środowiska może składać się z wielu scen, z których wszystkie muszą być ładowane jednocześnie do funkcji. Aby to ułatwić, możesz oznaczyć sceny, a następnie załadować je lub zwolnić z tego tagu.
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Stage1");
// Wait until stage 1 is complete
await UnloadContentByTag("Stage1");
await LoadContentByTag("Stage2);
Ładowanie według tagu może być również przydatne, jeśli artyści chcą dołączać/usuwać elementy ze środowiska bez konieczności modyfikowania skryptów. Na przykład uruchomienie tego skryptu z następującymi dwoma zestawami tagów daje różne wyniki:
IMixedRealitySceneSystem sceneSystem = MixedRealityToolkit.Instance.GetService<IMixedRealitySceneSystem>();
await LoadContentByTag("Terrain");
await LoadContentByTag("Structures");
await LoadContentByTag("Vegetation");
Testowanie zawartości
Nazwa sceny | Tag sceny | Załadowane przez skrypt |
---|---|---|
DebugTerrainPhysics | Terenu | • |
StrukturaTestowanie | Struktury | • |
RoślinnośćTools | Roślinności | • |
Mountain | Terenu | • |
Kabiny | Struktury | • |
Drzew | Roślinności | • |
Ostateczna zawartość
Nazwa sceny | Tag sceny | Załadowane przez skrypt |
---|---|---|
DebugTerrainPhysics | DoNotInclude | |
StrukturaTestowanie | DoNotInclude | |
RoślinnośćTools | DoNotInclude | |
Mountain | Terenu | • |
Kabiny | Struktury | • |
Drzew | Roślinności | • |
Zachowanie edytora
Wszystkie te operacje można wykonywać w edytorze i w trybie odtwarzania przy użyciu inspektora usługi systemu sceny. W trybie edycji obciążenia sceny będą natychmiastowe, podczas gdy w trybie odtwarzania można obserwować postęp ładowania i używać tokenów aktywacji.