Der Audio Listener gehört zu den grundlegenden Komponenten des Audiosystems in Unity. Während Audio Sources Musik, Geräusche und andere Klänge abspielen, übernimmt der Audio Listener die Rolle des Hörers. Er bestimmt, aus welcher Position und Ausrichtung räumliche Klänge wahrgenommen werden.
In vielen Unity-Szenen befindet sich diese Komponente auf der Main Camera. Dadurch folgt der Hörpunkt den Bewegungen der Kamera. Das ist besonders bei dreidimensionalen Spielen relevant, in denen die Position einer Geräuschquelle die akustische Wahrnehmung beeinflusst.
Wie funktioniert der Audio Listener?
Der Audio Listener empfängt die Audiosignale der aktiven Audio Sources und bildet den Bezugspunkt für die räumliche Klangberechnung. Er spielt selbst keine Audiodateien ab und benötigt deshalb keinen eigenen Audio Clip.
Stell dir eine Szene mit einer Spielfigur und einem brennenden Ofen vor. Der Ofen besitzt eine Audio Source, die das Knistern des Feuers wiedergibt. Der Audio Listener befindet sich auf der Kamera.
Bei entsprechend konfiguriertem 3D-Audio kann das Feuer lauter oder leiser erscheinen, je nachdem, wie weit der Listener vom Ofen entfernt ist. Auch die Richtung der Geräuschquelle kann sich auf die räumliche Wiedergabe auswirken.
Warum befindet sich der Audio Listener meistens auf der Main Camera?
In einer neu angelegten Unity-Szene besitzt die Main Camera häufig bereits einen Audio Listener. Diese Anordnung verbindet den sichtbaren Blickpunkt mit dem akustischen Standpunkt.
Bewegt sich die Kamera durch die Spielwelt, folgt der Listener automatisch. Seine Position und Ausrichtung ergeben sich aus dem Transform des GameObjects, auf dem die Komponente sitzt.
Das eignet sich beispielsweise für Spiele aus der Ego-Perspektive. Dort entspricht die Kamera häufig ungefähr der Position, aus der die Spielfigur ihre Umgebung wahrnimmt.
Bei anderen Kameraperspektiven kann eine abweichende Anordnung sinnvoll sein. Folgt die Kamera einer Spielfigur aus größerer Entfernung, muss der akustische Standpunkt nicht zwangsläufig mit der Kameraposition übereinstimmen.
Audio Listener und der Transform
Wie andere Komponenten nutzt auch der Audio Listener den Transform seines GameObjects. Besonders relevant sind dessen Position und Rotation.
Die Position bestimmt den räumlichen Bezugspunkt für die Audioverarbeitung. Die Rotation beeinflusst, wie die Richtungen räumlicher Geräuschquellen relativ zum Hörer interpretiert werden.
Eine eigene Positionseinstellung innerhalb der Audio-Listener-Komponente benötigst du dafür nicht. Möchtest du den Hörpunkt verschieben, veränderst du den Transform des entsprechenden GameObjects oder platzierst den Listener auf einem anderen Objekt.
Weitere Grundlagen dazu findest du im Artikel Unity Transform – Position, Rotation und Skalierung verstehen.
Audio Listener und 2D-Sound
Nicht jeder Klang benötigt eine räumliche Positionierung. Hintergrundmusik, Menütöne oder bestimmte Benutzeroberflächengeräusche sollen häufig unabhängig von der Position der Kamera gleichmäßig hörbar bleiben.
Dafür kannst du eine Audio Source auf 2D-Audio einstellen. Bei dieser Konfiguration beeinflusst die räumliche Entfernung zwischen Audio Source und Audio Listener die Lautstärke nicht wie bei einer räumlichen Klangquelle.
Das bedeutet allerdings nicht, dass der Audio Listener für 2D-Sound überflüssig ist. Auch nicht räumlich positionierte Audio Sources gehören zum Unity-Audiosystem und benötigen einen aktiven Listener für die normale Audioausgabe.
Räumliche Klangwiedergabe mit 3D-Audio
Bei 3D-Audio berücksichtigt Unity die räumliche Beziehung zwischen Audio Source und Audio Listener. Dafür stehen innerhalb der Audio Source verschiedene Einstellungen zur Verfügung.
Besonders wichtig ist Spatial Blend. Mit diesem Wert bestimmst du, wie stark ein Klang als 2D- oder 3D-Audio behandelt wird.
Bei einer vollständig räumlichen Konfiguration können beispielsweise die Entfernung zwischen Audio Source und Audio Listener, die Richtung der Geräuschquelle, die eingestellten Entfernungsgrenzen und das gewählte Lautstärke-Abfallmodell relevant sein. Zusätzliche Einstellungen wie Doppler Level oder Spatialize beeinflussen die Wiedergabe je nach Konfiguration ebenfalls.
Audio Source und Audio Listener arbeiten zusammen
Eine Audio Source enthält die Einstellungen zur Wiedergabe eines Klanges. Dort kannst du unter anderem einen Audio Clip zuweisen, die Lautstärke verändern und festlegen, ob ein Geräusch wiederholt abgespielt werden soll.
Der Audio Listener übernimmt dagegen die Rolle des Hörers. Beide Komponenten erfüllen damit unterschiedliche Aufgaben. Ein GameObject mit Audio Listener benötigt nicht automatisch eine eigene Audio Source. Ebenso muss sich eine Audio Source nicht auf demselben GameObject wie der Listener befinden.
In einer Spielszene können zahlreiche Audio Sources gleichzeitig existieren. Beispielsweise besitzt ein Ofen eine Quelle für Feuergeräusche, während andere Objekte Schritte, Wind oder Umgebungsgeräusche abspielen.
Mehr über die Wiedergabe erfährst du im Artikel Unity Audio Source – Sounds und Musik in der Szene abspielen.
Warum sollte nur ein Audio Listener aktiv sein?
Unity sieht für die gewöhnliche Audioausgabe einen aktiven Audio Listener vor. Ein häufiger Fehler entsteht, wenn du eine zweite Kamera erstellst und diese ebenfalls einen Audio Listener besitzt. Sind beide Listener gleichzeitig aktiv, erscheint in der Unity-Konsole eine entsprechende Warnung.
Die Meldung weist darauf hin, dass mehrere aktive Audio Listener vorhanden sind. Prüfe in diesem Fall, welche Kamera beziehungsweise welches GameObject den Hörpunkt übernehmen soll. Auf den anderen Objekten kannst du die zusätzliche Audio-Listener-Komponente deaktivieren oder entfernen.
Eine zweite Kamera benötigt nicht automatisch einen eigenen Listener.
Audio Listener bei Kamerawechseln
In manchen Spielen wechselt die Perspektive während des Spielablaufs. Ein Beispiel wäre der Übergang von einer frei beweglichen Kamera zu einer festgelegten Ansicht während einer Zwischensequenz.
Dabei stellt sich die Frage, ob der Hörpunkt ebenfalls wechseln soll. Eine Möglichkeit besteht darin, den Audio Listener auf einem separaten GameObject zu platzieren und dessen Position unabhängig von der Kamera zu steuern.
Alternativ lässt sich der Listener auf der Kamera belassen, sofern die Kamerabewegung zugleich die gewünschte Hörposition darstellt. Bei mehreren Kameras solltest du darauf achten, dass nicht versehentlich mehrere Listener gleichzeitig aktiv sind.
Audio Listener und Cinemachine
Verwendest du Cinemachine zur Kamerasteuerung, bleibt die eigentliche Unity Camera für das Rendering zuständig. Der Cinemachine Brain übernimmt dabei die Steuerung anhand der eingerichteten virtuellen Kameras.
Der Audio Listener kann weiterhin auf dieser rendernden Kamera sitzen. Bewegt Cinemachine die Kamera, bewegt sich damit auch der Hörpunkt. Ein eigener Audio Listener auf jeder virtuellen Cinemachine-Kamera ist dafür normalerweise nicht erforderlich.
Bei besonderen Kamerakonfigurationen kann eine unabhängige Hörposition dennoch sinnvoll sein.
Audio Listener bei einem 2D-Plattformer
Auch in einem 2D-Plattformer gehört der Audio Listener zum grundlegenden Audiosystem. Angenommen, deine Spielfigur sammelt Kohle ein. Beim Berühren eines Kohleobjekts soll ein kurzer Soundeffekt erklingen. Gleichzeitig läuft Hintergrundmusik, und aus einem Ofen kommt ein leises Feuergeräusch.
Für diese drei Klangarten kannst du unterschiedliche Audio Sources verwenden. Der Kohle-Sound lässt sich als 2D-Effekt abspielen, wenn er unabhängig von der räumlichen Position gut hörbar bleiben soll. Hintergrundmusik wird ebenfalls häufig ohne räumliche Entfernungseffekte wiedergegeben.
Das Feuergeräusch könnte dagegen räumlich positioniert sein. Ob diese Lösung sinnvoll ist, hängt davon ab, wie du die Geräuschkulisse gestalten möchtest. Der Audio Listener bleibt dabei der gemeinsame Hörpunkt.
Lautstärke des Audio Listeners
Im Inspector besitzt der Audio Listener keine umfangreiche Sammlung an Wiedergabeeinstellungen. Die Lautstärke einzelner Klänge regelst du hauptsächlich über ihre Audio Sources oder über einen Audio Mixer.
Zusätzlich lässt sich die globale Lautstärke des Unity-Audiosystems über AudioListener.volume beeinflussen. Ein einfaches Beispiel:
using UnityEngine;
public class AudioVolume : MonoBehaviour
{
public void SetVolume(float volume)
{
AudioListener.volume = Mathf.Clamp01(volume);
}
}
Der übergebene Wert wird auf den Bereich zwischen 0 und 1 begrenzt. Damit kannst du beispielsweise eine globale Lautstärkeeinstellung umsetzen. Für getrennte Lautstärkeregler für Musik, Soundeffekte und Umgebungsgeräusche eignet sich dagegen häufig ein Audio Mixer.
Audio Listener per Script aktivieren und deaktivieren
Du kannst einen Audio Listener auch über ein Script ansprechen. Dafür benötigst du eine Referenz auf die entsprechende Komponente.
using UnityEngine;
public class ListenerControl : MonoBehaviour
{
public AudioListener listener;
public void DisableListener()
{
if (listener != null)
{
listener.enabled = false;
}
}
public void EnableListener()
{
if (listener != null)
{
listener.enabled = true;
}
}
}
Im Inspector weist du dem Feld listener den gewünschten Audio Listener zu. Mit den beiden Methoden lässt sich die Komponente aktivieren beziehungsweise deaktivieren.
Solange kein anderer Listener aktiv ist, fehlt dem Audiosystem allerdings der benötigte Hörpunkt. Bei Kamerawechseln solltest du deshalb sicherstellen, dass die Aktivierung und Deaktivierung der Listener aufeinander abgestimmt sind.
Typische Probleme mit dem Audio Listener
Wenn du in Unity keinen Ton hörst, muss die Ursache nicht zwangsläufig beim Audio Listener liegen. Trotzdem lohnt sich eine Kontrolle dieser Komponente.
Prüfe zunächst, ob überhaupt ein aktiver Audio Listener vorhanden ist. Anschließend solltest du kontrollieren, ob die verwendeten Audio Sources aktiviert sind und tatsächlich Audio Clips abspielen.
Bei räumlichen Geräuschen kann außerdem die Entfernung zwischen Quelle und Listener eine Rolle spielen. Befindet sich eine Audio Source außerhalb ihrer eingestellten Hörweite, kann ihr Signal entsprechend stark abgeschwächt sein.
Taucht dagegen eine Warnung über mehrere Audio Listener auf, solltest du die aktiven Kamera- und Audioobjekte überprüfen.
Audio Listener und Audio Manager
Bei größeren Spielen kann ein zentraler Audio Manager die Organisation der Audioausgabe erleichtern. Er übernimmt beispielsweise die Verwaltung von Musik, Soundeffekten und Lautstärkeeinstellungen.
Der Audio Listener bleibt dabei eine eigenständige Komponente. Ein Audio Manager ersetzt ihn nicht, sondern kann mit den vorhandenen Audio Sources und weiteren Audiokomponenten zusammenarbeiten.
Ob du ein solches Verwaltungssystem benötigst, hängt vom Umfang deines Projekts ab. Für einen kleinen Prototyp reichen oft wenige Audio Sources und der Audio Listener auf der Main Camera.
Der Audio Listener als Bestandteil der Spielatmosphäre
Die Position des Hörers beeinflusst, wie räumliche Geräusche innerhalb einer Spielwelt wahrgenommen werden. Eine Kamera, die sich von einer Geräuschquelle entfernt, kann damit auch den akustischen Eindruck verändern.
Bei nicht räumlich positionierten Klängen steht dagegen eine gleichmäßige Wiedergabe im Vordergrund. Beide Varianten lassen sich innerhalb desselben Projekts kombinieren.
Entscheidend ist, dass du die Aufgaben von Audio Listener und Audio Source voneinander unterscheidest und die Hörposition passend zu deiner Kamerasteuerung und dem gewünschten Klangbild festlegst.
Weitere technische Einzelheiten findest du im Unity-Handbuch zum Audio Listener.
