Introducción
En este artículo vemos cómo reproducir música y efectos de sonido en Unity, haciendo que se reproduzcan de manera automática al iniciar el modo juego, pero también vamos a ver cómo crear un script de control para reproducir la música o el sonido en Unity a través de código.
Para reproducir clips de audio en Unity se utiliza un componente llamado AudioSource, que significa fuente de audio, este componente nos permite configurar distintos parámetros como por ejemplo el volumen, hacer que se reproduzca en bucle, entre otros.
El componente AudioSource por si solo no es suficiente para escuchar los audios en Unity, también es necesario que haya en la escena un componente de tipo AudioListener, este componente normalmente viene asignado a la cámara por defecto al crear una nueva escena, el AudioListener actua como los “oídos” que oyen el sonido que reproducen los AudioSources. Hay que asegurarse de que solo haya un único componente AudioListener en la escena, especialmente si estamos usando efectos de sonidos en 3D, es decir que tenemos en cuenta la posición desde donde se está originando el sonido, por ejemplo si un sonido se produce a la derecha de la perspectiva del jugador, que el sonido se escuche con mayor volumen en los altavoces de la derecha.
En el siguiente vídeo vemos cómo reproducir música o sonidos en Unity de manera automática al iniciar la partida y también cómo reproducir la música y detenerla a través de script
Procedimiento resumido para reproducir un sonido en Unity al iniciar el juego
1. Crear un GameObject y en el inspector asignarle el componente AudioSource (Botón Add Component).
2. Configurar el componente AudioSource con la opción “Play On Awake” activada y el resto de los parámetros a gusto (más adelante vemos las distintas opciones).
3. Al entrar en el modo juego, el sonido comenzará a reproducirse de manera automática con los parámetros configurados.
Procedimiento resumido para reproducir un sonido en Unity desde un Script
1. Crear un GameObject y en el inspector asignarle el componente AudioSource (Botón Add Component). Desactivar la opción “Play on Awake” y configurar los demás parámetros a gusto.
2. Crear un Script para controlar el inicio del sonido, el volumen, el final, entre otras acciones. Asignar este Script al mismo GameObject que tiene el componente AudioSource.
3. En el script definir una referencia para el objeto AudioSource y encontrarla en el método Start usando GetComponent<>().
4. Definir una función pública para reproducir el sonido desde cualquier otro Script, dentro de esta función ejecutar la instrucción: “audioSource.Play()”.
5. Detectar el evento en el cual el sonido debe reproducirse y en ejecutar la función Reproducir definida en el script del audio.
Configuración del componente AudioSource
El componente AudioSource tiene muchos parámetros ajustables para conseguir distintos resultados con nuestros sonidos. En la siguiente imagen vemos qué aspecto tiene el componente AudioSource en el inspector en Unity.
Para empezar podemos asignar manualmente el sonido que queremos reproducir arrastrándolo al campo AudioClip. Esto también lo podemos hacer desde un script con la instrucción “audioSource.clip=unClip;”, siendo “audioSource” la referencia del componente AudioSource del inspector y “unClip” es un campo que contiene la referencia de algún sonido.
Luego podemos mutear el sonido y ajustarle el volumen. Habilitar la opción “Play On Awake” para que el sonido se reproduzca ni bien el GameObject entre en estado habilitado. La opción Loop hace que el sonido se vuelva a reproducir cuando termina.
El Spatial Blend es un parámetro que nos permite ajustar si se trata de un sonido de fondo o un sonido que depende de la distancia que hay entre el AudioSource y el AudioListener, si ponemos el indicador en 3D, obtendremos un sonido stereo cuyo volumen y distribución en los audífonos dependerá de la posición en la que está la fuente. Dentro de 3D Sound Settings podemos ajustar parámetros relacionados a esto.