ScenesManager - Szenen in Unity additiv laden und verwalten

Eine Sache, die ich mir angewöhnt habe, ist, Szenen in Unity nur noch additiv zu laden. Ich habe eine Hauptszene, die ich Main nenne, und die wird nie verlassen. In dieser Szene platziere ich alle globalen Dienste. Die Szenen ändere ich dann nur noch, indem ich neue Szenen hinzu lade oder wieder entferne. Damit das einfach geht, habe ich den ScenesManager entwickelt.

So funktioniert der ScenesManager

Mit dem ScenesManager kannst Du neue Scenes laden:

ScenesManager.service?.Load("MyScene");

Alle Szenen werden additiv geladen. Das bedeutet, dass die aktuelle Szene nicht entladen wird. Wenn Du die Szene entladen willst, musst Du dies manuell tun:

ScenesManager.service?.Exit("MyScene");

Du kannst Szenen auch auf Basis von bestimmten Bedingungen verlassen. Um alle Szenen zu beenden, die mit einem bestimmten Namen beginnen, verwende:

ScenesManager.service?.ExitAllLike("MyScene");

Um alle Szenen außer einer bestimmten Szene zu beenden, verwende:

ScenesManager.service?.ExitAllExcept("MyScene");

Um alle Szenen zu beenden, verwende:

ScenesManager.service?.ExitAll();

Es gibt auch eine Hilfsmethode, die alle Szenen beendet und eine neue Szene lädt:

ScenesManager.service?.ChangeTo("MyScene");

Alle Lade- und Entladevorgänge werden asynchron durchgeführt.

Bitte beachte: Wenn Du den ScenesManager verwenden willst, kannst Du nur noch den ScenesManager verwenden. Verwende Unity's SceneManagement nicht direkt. Dies würde zu unerwartetem Verhalten führen.

Dein Feedback ist wichtig!

Was hältst Du von den hier vorgestellten Services? Fehlt Dir etwas oder funktioniert etwas nicht wie erwartet? Wie immer freue ich mich über Feedback. Lass mich gerne wissen was Du über dieses Modul denkst. Dafür kannst Du zum Beispiel die Kommentarfunktion unter dem Artikel nutzen. Weitere Kontakt-Möglichkeiten findest Du auf hier. Wenn Du einen Bug gefunden hast oder Dir eine Erweiterung wünscht, erstelle bitte einen Issue im GitHub-Repository. Weitere Dokumentation findest Du wie immer in der README des entsprechenden Moduls.

Noch keine Kommentare vorhanden.