Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Sound-Manager | Unity UI und Sounds
Unity für Anfänger
course content

Kursinhalt

Unity für Anfänger

Unity für Anfänger

1. Einführung in Unity
2. Schreiben Sie Ihr Erstes Skript
3. Unity Physics
4. Unity UI und Sounds
5. Polishing and Exporting Your Game

book
Sound-Manager

Verständnis von Singleton in Unity

In Unity ist ein Singleton ein Entwurfsmuster, das sicherstellt, dass eine Klasse nur eine Instanz hat und einen globalen Zugriffspunkt darauf bietet. Dies ist besonders nützlich für die Verwaltung von Spielekomponenten, die über verschiedene Szenen hinweg bestehen bleiben müssen, wie ein SoundManager.

Wie Singleton in Unity funktioniert

  1. Einzelne Instanz: Die SoundManager-Klasse deklariert eine öffentliche statische Variable instance ihres eigenen Typs. Diese Variable hält die einzelne Instanz der SoundManager-Klasse;

  2. Initialisierung in der Start()-Methode: Wenn das GameObject mit diesem Skript aktiv wird, ruft Unity automatisch die Start()-Methode auf. Hier wird die Singleton-Instanz initialisiert:

    • Wenn instance null ist, bedeutet das, dass noch kein SoundManager existiert, also wird die aktuelle Instanz (this) instance zugewiesen, wodurch sie zum Singleton wird;
    • Wenn instance nicht null ist, existiert bereits ein anderer SoundManager, was im Singleton-Muster nicht passieren sollte. In diesem Fall wird das aktuelle GameObject mit Destroy(gameObject) zerstört, um das Singleton-Muster aufrechtzuerhalten.
  3. Persistenz über Szenen hinweg: Die Methode DontDestroyOnLoad(gameObject) wird verwendet, um sicherzustellen, dass das GameObject (und damit die SoundManager-Instanz) zwischen Szenenwechseln bestehen bleibt. Dies ist entscheidend, um ein konsistentes Audioverhalten über verschiedene Szenen hinweg zu gewährleisten.

Zugriff auf die Singleton-Instanz

Einmal eingerichtet, können andere Skripte die Funktionalität des SoundManager im gesamten Spiel einfach über SoundManager.instance nutzen. Um beispielsweise einen Audioeffekt abzuspielen, kann ein anderes Skript SoundManager.instance.PlayEffect(index) aufrufen. Dies ermöglicht es jedem Skript im Spiel, mit dem SoundManager zu interagieren, ohne mehrere Instanzen zu erstellen oder sich um die Initialisierung zu kümmern.

Vorteile der Verwendung von Singleton

  • Zentralisierte Verwaltung: bietet einen zentralen Punkt zur Verwaltung von soundbezogener Funktionalität, was es einfacher macht, die Audiowiedergabe im gesamten Spiel zu steuern und zu warten;

  • Globaler Zugriff: Die Singleton-Instanz kann global von jedem Skript aus aufgerufen werden, sodass verschiedene Teile des Spiels nahtlos mit dem Soundsystem interagieren können;

  • Persistenz: stellt sicher, dass die Audiowiedergabe im gesamten Spiel ohne Unterbrechung während Szenenwechseln konsistent bleibt.

  • Statische Instanz: public static SoundManager instance; deklariert eine statische Variable, die die einzelne Instanz der SoundManager-Klasse halten wird;

  • Start-Methode: Die Start()-Methode wird aufgerufen, wenn das Skript aktiv wird. Sie überprüft, ob instance null ist (was bedeutet, dass noch keine Instanz existiert). Wenn ja, weist sie das aktuelle Objekt (this) instance zu, wodurch es zum Singleton wird;

  • Duplikat zerstören: Wenn instance nicht null ist, bedeutet das, dass bereits eine andere Instanz existiert, sodass das aktuelle GameObject zerstört wird, um das Singleton-Muster aufrechtzuerhalten;

  • Persistenz: DontDestroyOnLoad(gameObject); stellt sicher, dass das GameObject über Szenenwechsel hinweg bestehen bleibt, sodass der SoundManager seinen Zustand und seine Funktionalität im gesamten Spiel beibehalten kann.

Zugriff auf die Singleton-Instanz

Sobald der SoundManager als Singleton eingerichtet ist, können andere Skripte einfach auf seine Funktionalität im gesamten Spiel zugreifen: Andere Skripte können auf die SoundManager-Instanz mit SoundManager.instance zugreifen. Zum Beispiel kann ein anderes Skript, um einen Audioeffekt abzuspielen, SoundManager.instance.PlayEffect(index) aufrufen.

Auf diese Weise kann jedes Skript im Spiel auf die SoundManager-Instanz und ihre Funktionalität zugreifen, ohne mehrere Instanzen erstellen oder sich um die Initialisierung kümmern zu müssen.

Vorteile in Unity

Die Verwendung des Singleton-Musters in Unity, insbesondere für Manager wie den SoundManager, bietet mehrere Vorteile:

Zentralisierte Verwaltung: Es bietet einen zentralen Punkt zur Verwaltung von soundbezogener Funktionalität, was die Steuerung und Wartung der Audiowiedergabe im gesamten Spiel erleichtert.

Globaler Zugriff: Die Singleton-Instanz kann global von jedem Skript aus zugegriffen werden, sodass verschiedene Teile des Spiels nahtlos mit dem Soundsystem interagieren können.

Persistenz: Die Singleton-Instanz besteht über Szenen hinweg, was eine konsistente Audiowiedergabe im gesamten Spiel ohne Unterbrechung während Szenenwechseln gewährleistet.

1. Was ist der Zweck der Instanzvariable in der SoundManager-Klasse?

2. Was macht DontDestroyOnLoad(gameObject) in der SoundManager-Klasse?

Was ist der Zweck der Instanzvariable in der `SoundManager`-Klasse?

Was ist der Zweck der Instanzvariable in der SoundManager-Klasse?

Wählen Sie die richtige Antwort aus

Was macht `DontDestroyOnLoad(gameObject)` in der `SoundManager`-Klasse?

Was macht DontDestroyOnLoad(gameObject) in der SoundManager-Klasse?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 5
We're sorry to hear that something went wrong. What happened?
some-alt