En aquest tema, aprendrem com programar l'àudio en Unity utilitzant scripts en C#. Explorarem com reproduir clips d'àudio, controlar el volum, i gestionar l'àudio en resposta a esdeveniments del joc.
Conceptes Clau
- AudioSource: Component que reprodueix clips d'àudio.
- AudioClip: Fitxer d'àudio que es pot reproduir.
- AudioListener: Component que escolta l'àudio en l'escena, normalment associat a la càmera principal.
- Metodes d'AudioSource:
Play()
,Pause()
,Stop()
, etc.
Exemples Pràctics
- Configuració Bàsica
Primer, assegurem-nos que tenim un AudioSource
i un AudioClip
en el nostre projecte.
-
Afegir un AudioSource:
- Selecciona l'objecte de joc al qual vols afegir l'àudio.
- A la finestra de l'Inspector, fes clic a "Add Component" i selecciona "AudioSource".
-
Assignar un AudioClip:
- Arrossega el fitxer d'àudio des de la finestra del Projecte fins al camp
AudioClip
delAudioSource
en l'Inspector.
- Arrossega el fitxer d'àudio des de la finestra del Projecte fins al camp
- Reproduir Àudio amb Scripts
Crearem un script per controlar la reproducció de l'àudio.
Script: AudioController.cs
using UnityEngine; public class AudioController : MonoBehaviour { public AudioSource audioSource; public AudioClip audioClip; void Start() { // Assignar l'AudioClip a l'AudioSource audioSource.clip = audioClip; } void Update() { // Reproduir l'àudio quan es prem la tecla espai if (Input.GetKeyDown(KeyCode.Space)) { PlayAudio(); } // Pausar l'àudio quan es prem la tecla P if (Input.GetKeyDown(KeyCode.P)) { PauseAudio(); } // Aturar l'àudio quan es prem la tecla S if (Input.GetKeyDown(KeyCode.S)) { StopAudio(); } } void PlayAudio() { if (!audioSource.isPlaying) { audioSource.Play(); } } void PauseAudio() { if (audioSource.isPlaying) { audioSource.Pause(); } } void StopAudio() { if (audioSource.isPlaying) { audioSource.Stop(); } } }
- Controlar el Volum
Podem ajustar el volum de l'àudio mitjançant el component AudioSource
.
Script: VolumeController.cs
using UnityEngine; public class VolumeController : MonoBehaviour { public AudioSource audioSource; void Update() { // Ajustar el volum amb les tecles de fletxa amunt i avall if (Input.GetKey(KeyCode.UpArrow)) { audioSource.volume += 0.01f; } if (Input.GetKey(KeyCode.DownArrow)) { audioSource.volume -= 0.01f; } // Assegurar que el volum es manté entre 0 i 1 audioSource.volume = Mathf.Clamp(audioSource.volume, 0f, 1f); } }
Exercicis Pràctics
Exercici 1: Reproduir Àudio en Resposta a un Esdeveniment
Crea un script que reprodueixi un clip d'àudio quan el jugador col·lisioni amb un objecte específic.
Solució
using UnityEngine; public class CollisionAudio : MonoBehaviour { public AudioSource audioSource; public AudioClip collisionClip; void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Player") { audioSource.PlayOneShot(collisionClip); } } }
Exercici 2: Crear un Controlador de Música de Fons
Crea un script que reprodueixi música de fons en bucle i permeti ajustar el volum amb les tecles de fletxa.
Solució
using UnityEngine; public class BackgroundMusicController : MonoBehaviour { public AudioSource musicSource; void Start() { musicSource.loop = true; musicSource.Play(); } void Update() { if (Input.GetKey(KeyCode.UpArrow)) { musicSource.volume += 0.01f; } if (Input.GetKey(KeyCode.DownArrow)) { musicSource.volume -= 0.01f; } musicSource.volume = Mathf.Clamp(musicSource.volume, 0f, 1f); } }
Errors Comuns i Consells
- No Assignar l'AudioSource o l'AudioClip: Assegura't que els camps
AudioSource
iAudioClip
estan assignats en l'Inspector. - Volum Fora de Rang: Utilitza
Mathf.Clamp
per assegurar que el volum es manté entre 0 i 1. - Reproduir Àudio Repetidament: Utilitza
audioSource.isPlaying
per evitar reproduir l'àudio repetidament si ja està sonant.
Conclusió
En aquesta secció, hem après com programar l'àudio en Unity utilitzant scripts en C#. Hem vist com reproduir, pausar i aturar clips d'àudio, així com ajustar el volum. Aquests conceptes són fonamentals per crear una experiència de joc immersiva amb àudio dinàmic. En el següent tema, explorarem l'àudio 3D i el so espacial per afegir una nova dimensió a l'àudio del nostre joc.
Curs de Unity
Mòdul 1: Introducció a Unity
- Introducció a Unity i Instal·lació
- Visió General de la Interfície de Unity
- Creant el Teu Primer Projecte
- Objectes de Joc Bàsics i Components
Mòdul 2: Programació Bàsica en Unity
- Introducció a C# per a Unity
- Creant i Adjuntant Scripts
- Entenent MonoBehaviour
- Gestió Bàsica d'Entrades
Mòdul 3: Treballant amb Actius
- Important i Gestionant Actius
- Utilitzant la Botiga d'Actius
- Creant i Utilitzant Prefabs
- Animació Bàsica
Mòdul 4: Física i Col·lisions
- Introducció a la Física de Unity
- Rigidbody i Col·liders
- Detecció Bàsica de Col·lisions
- Utilitzant Materials de Física
Mòdul 5: Interfície d'Usuari (UI)
- Introducció a la UI de Unity
- Creant i Personalitzant Elements de UI
- Gestió d'Esdeveniments de UI
- Creant Menús i HUDs
Mòdul 6: Àudio en Unity
- Introducció a l'Àudio en Unity
- Important i Utilitzant Clips d'Àudio
- Programació Bàsica d'Àudio
- Àudio 3D i So Espacial
Mòdul 7: Programació Avançada
- Conceptes Avançats de C# per a Unity
- Coroutines i Programació Asíncrona
- Objectes Scriptables
- Editors Personalitzats i Gizmos
Mòdul 8: Física Avançada i IA
- Tècniques Avançades de Física
- Pathfinding i Navegació
- Programació Bàsica d'IA
- Màquines d'Estats i Arbres de Comportament
Mòdul 9: Optimització i Rendiment
- Tècniques de Perfilat i Optimització
- Gestió de Memòria
- Reduint Draw Calls
- Optimitzant Física i Col·lisions