Wie du Game Objekte auch über einen Szenenwechsel hinaus weiterleben lassen kannst habe ich bereits im Jump and Run Tutorial 27 gezeigt. Hierzu haben wir DontDestroyOnLoad verwendet. Das Problem: Wechselt man wieder zurück in die Szene die ursprünglich das Game Objekt beinhaltet wird ein zweites erstellt. Dies ist problematisch.
Ein Beispiel: Szene 01 (MainMenu) beinhaltet ein Game Objekt mit einer Audio Datei und einem Skript mit DontDestroyOnLoad. Der Spieler wechselt in die zweite Szene (Level 01), das Objekt lebt weiter und die Musik wird auch weiter abgespielt. Der Spieler wechselt wieder zurück in Szene 01 und die Audiodatei wird nun mehrmals abgespielt und es befindet sich in der Hierarchie zwei Game Objekte mit dem gleichen Namen und der gleichen Funktion.
Singleton in Unity erstellen
Um genau diese Problematik zu verwenden musst du mit Hilfe deines Skripts überprüfen ob es in deiner Hierarchie bereits ein solches Game Objekt gibt. Hierbei hilft dir das sogenannte Singleton Pattern (dt. Einzelstück). Du erstellst dir also eine Struktur die beim Erstellen deines game objects zuerst überprüft ob eine solche Instanz in der Szene bereits vorhanden ist. Wenn noch keine Instanz vorhanden ist, dann wird das neue game object zur Instanz. Sollte das Gegenteil der Fall sein, dann wird das neue game object zerstört.
Singleton in Unity erstellen