Einheit - Einführung in Audio
Es gibt einen Grund, warum Spiele den Schwerpunkt auf Audio legen. Es ist sehr wichtig, dem Spiel einen ästhetischen Wert zu verleihen. Von Anfang anPongMan kann Pieptöne und Boops vom Ball hören, die abwechselnd auf die Paddel schlagen. Es war damals ein wirklich einfaches kurzes Rechteckwellen-Sample, aber was will man mehr vom Großvater aller Videospiele?
Im wirklichen Leben beeinflussen viele Dinge die Art und Weise, wie Sie Geräusche wahrnehmen. die Geschwindigkeit des Objekts, in welcher Art von Szenario es sich befindet und aus welcher Richtung es kommt.
Es gibt eine Reihe von Faktoren, die unseren Motor unnötig belasten können. Stattdessen versuchen wir, eine Vorstellung davon zu bekommen, wie unser Sound in unserem Spiel funktionieren würde, und bauen darauf auf. Dies wird besonders bei 3D-Spielen deutlich, bei denen 3 Achsen zu bewältigen sind.
In Unity haben wir spezielle Komponenten für die Audiowahrnehmung und -wiedergabe. Diese Komponenten arbeiten zusammen, um ein glaubwürdiges Soundsystem zu schaffen, das sich für das Spiel natürlich anfühlt.
Unity bietet uns eine Reihe nützlicher Werkzeuge und Effekte wie Hall, Doppler-Effekt, Echtzeit-Mixing und Effekte usw. Wir werden dies in unseren folgenden Kapiteln erfahren.
Die Audiokomponenten
In diesem Abschnitt lernen wir die drei Hauptkomponenten kennen, die sich auf Audio in Unity beziehen.
Audio quelle
Die AudioSource-Komponente ist die Hauptkomponente, die Sie an ein GameObject anhängen, damit es wiedergegeben wird. Es wird ein wiedergegebenAudioClip wenn durch den Mixer, durch Code oder standardmäßig ausgelöst, wenn es aufwacht.
Ein AudioClip ist einfach eine Audiodatei, die in eine AudioSource geladen wird. Dies kann eine beliebige Standard-Audiodatei sein, z. B. MP3, WAV usw. Ein AudioClip ist auch eine Komponente in sich.
AudioListener
Ein AudioListener ist die Komponente, die listenszu allen Audiodaten, die in der Szene abgespielt werden, und überträgt sie auf die Lautsprecher des Computers. Es verhält sich wie dasearsdes Spiels. Alle Audiodaten, die Sie hören, beziehen sich auf die Positionierung dieses AudioListeners. Es sollte sich nur ein AudioListener in einer Szene befinden, damit er ordnungsgemäß funktioniert. Standardmäßig ist an der Hauptkamera der Listener angeschlossen. Der Listener hat keine exponierten Eigenschaften, um die sich der Designer kümmern möchte.
Audiofilter
Die Ausgabe einer AudioSource oder die Aufnahme eines AudioListener kann mit Hilfe von Audiofiltern geändert werden. Dies sind bestimmte Komponenten, die den Hall, den Chorus, die Filterung usw. ändern können. Jeder spezifische Filter wird als eigene Komponente mit exponierten Werten geliefert, um den Klang zu optimieren.
Einen Sound abspielen
Lassen Sie uns versuchen, eine Schaltfläche zu erstellen, die beim Klicken einen Ton wiedergibt. Um loszulegen, werden wirCreate ein Kreis Sprite, und machen Sie es rot.
Lassen Sie uns nun eine anhängen Audio Source zu diesem Sprite.
Damit das Objekt einen Sound spielt, müssen wir ihm einen geben. Lassen Sie uns diesen Soundeffekt für unseren Zweck verwenden.
http://www.orangefreesounds.com/ding-sfx/
Laden Sie den Soundeffekt herunter und ziehen Sie ihn in die Assets.
Wenn Unity dieses Asset als Audiodatei importiert, wird es automatisch in eine konvertiert AudioClip. Daher können Sie diesen Soundclip aus den Assets direkt in den Audio-Clip-Steckplatz in der Audioquelle unseres Sprites ziehen.
Denken Sie daran, die Option "Play on Awake" in den Eigenschaften der Audioquelle zu deaktivieren, nachdem Sie den Soundclip aus den Assets direkt in den Audio-Clip-Steckplatz in der Audioquelle unseres Sprites gezogen haben. Wenn Sie dies nicht tun, wird der Sound in dem Moment abgespielt, in dem das Spiel beginnt.
Lassen Sie uns nun in unseren Code springen. Erstellen Sie ein neues Skript namens "BellSound" und öffnen Sie es.
Da unsere Audioquelle über Code gesteuert wird, möchten wir zunächst einen Verweis darauf erhalten. Wir werden die GetComponent-Methode wie zuvor verwenden.
public class BellSound : MonoBehaviour {
AudioSource mySource;
// Use this for initialization
void Start () {
mySource = GetComponent<AudioSource>();
}
Lassen Sie uns nun die Methode einrichten, um das angeklickte Objekt zu erkennen. MonoBehaviour bietet uns genau die Methode, die wir dafür benötigen: OnMouseDown. Die Methode wird immer dann aufgerufen, wenn die Maus im Bereich von a klicktcollider dieses gameObject.
Da wir noch keinen Collider an unseren Button angehängt haben, lassen Sie uns dies jetzt tun.
Wir werden keinen starren Körper für diesen brauchen; Wir müssen auch nicht per Code auf diesen Collider zugreifen. Es muss nur da sein, damit die Methode funktioniert.
Lassen Sie uns die Methode testen und sehen, ob sie funktioniert. Schreiben Sie den folgenden Code in Ihr Skript und hängen Sie ihn an die Schaltfläche an.
void OnMouseDown() {
Debug.Log(“Clicked!”);
}
Sobald Sie das Skript gespeichert und angehängt haben, spielen Sie das Spiel. Durch Klicken auf die Schaltfläche sollte eine Nachricht in der Konsole angezeigt werden.
Sie sind jetzt einen Schritt vom Abspielen des Sounds entfernt. Jetzt müssen Sie nur noch die anrufenPlay Methode in der Audio Source-Instanz.
void OnMouseDown() {
mySource.Play();
}
Speichern Sie Ihr Skript und führen Sie es im Spiel aus. Klicken Sie auf die Schaltfläche und Sie sollten den Ton hören!
Note- Erwägen Sie, eine Schaltfläche zu erstellen, deren Tonhöhe jedes Mal erhöht wird, wenn Sie darauf klicken. VerwendenmySource.pitch und einen Zähler und sehen, ob Sie es herausfinden können.)