🎮 UnityDocs

Audio en Unity: AudioSource y Mixer

Cómo reproducir música y efectos: AudioSource, AudioClip, PlayOneShot, el audio espacial 2D/3D y el Audio Mixer para controlar volúmenes y añadir efectos.

📄 ArtículoPrincipiante✅ RevisadoUnity 6.0 LTSActualizado 2026-07-15
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 7 min · ⌨️ Práctica 20 min

Las piezas del audio#

  • AudioClip: el archivo de sonido (un .wav, .mp3, .ogg en tu proyecto).
  • AudioSource: el "altavoz". El componente que reproduce un clip. Va en un GameObject.
  • AudioListener: el "oído". Normalmente está en la cámara principal; capta lo que suena. Solo debe haber uno activo.

Música de fondo#

Para música, un AudioSource con Loop y Play On Awake marcados, y su clip asignado. No hace falta código: empieza sola y se repite.

Efectos de sonido por código#

Para efectos puntuales (disparo, salto, moneda) usa PlayOneShot, que permite superponer varios sonidos sin cortar el anterior:

C#
using UnityEngine;

[RequireComponent(typeof(AudioSource))]
public class SonidosJugador : MonoBehaviour
{
    [SerializeField] private AudioClip sonidoSalto;
    [SerializeField] private AudioClip sonidoMoneda;
    private AudioSource audioSource;

    void Awake() => audioSource = GetComponent<AudioSource>();

    public void Saltar()  => audioSource.PlayOneShot(sonidoSalto, 0.8f);   // 0.8 = volumen
    public void Moneda()  => audioSource.PlayOneShot(sonidoMoneda);
}
Play vs PlayOneShot

audioSource.Play() reproduce el clip asignado y corta cualquier sonido anterior de esa fuente. PlayOneShot(clip) reproduce un clip encima, sin cortar. Para efectos que pueden solaparse (varios disparos seguidos), usa PlayOneShot.

Audio espacial: 2D vs 3D#

El parámetro Spatial Blend del AudioSource decide si el sonido es plano o posicional:

  • 2D (Spatial Blend = 0): suena igual estés donde estés (música, UI).
  • 3D (Spatial Blend = 1): suena según la posición y distancia (los pasos de un enemigo, una cascada). Se oye más fuerte al acercarte y con paneo izquierda/derecha.
Para sonido 3D creíble

Con Spatial Blend en 3D, ajusta la curva de atenuación (Volume Rolloff) y las distancias Min/Max: definen desde dónde empieza a bajar el volumen y a qué distancia deja de oírse. Un rolloff logarítmico suele sonar más natural.

El Audio Mixer: control profesional#

Para controlar volúmenes por categorías (Música, Efectos, Voces) y añadir efectos (reverb, eco), usa un Audio Mixer (Assets → Create → Audio Mixer). Creas grupos y enrutas cada AudioSource a su grupo (campo Output del AudioSource).

Cambiar el volumen de un grupo desde un slider de opciones:

C#
using UnityEngine;
using UnityEngine.Audio;

public class Opciones : MonoBehaviour
{
    [SerializeField] private AudioMixer mixer;

    // El slider da 0..1; el mixer trabaja en decibelios (escala logarítmica)
    public void CambiarVolumenMusica(float valor)
    {
        float db = Mathf.Log10(Mathf.Clamp(valor, 0.0001f, 1f)) * 20f;
        mixer.SetFloat("VolMusica", db);   // "VolMusica" = parámetro expuesto en el mixer
    }
}
El volumen va en decibelios, no en 0-1

Un slider da 0–1, pero el mixer usa decibelios (una escala logarítmica). Poner el parámetro directamente a 0–1 suena mal. Convierte con Mathf.Log10(valor) * 20. Y recuerda exponer el parámetro de volumen en el mixer (clic derecho sobre el volumen → Expose) y renombrarlo.

Rendimiento#

Muchos sonidos a la vez

Si disparas cientos de efectos por segundo, crear un AudioSource por cada uno es caro. Reutiliza una o varias fuentes con PlayOneShot, o aplica object pooling a las fuentes de audio. Además, para clips cortos usa Decompress On Load; para música larga, Streaming.

Errores frecuentes#

  • Tener varios AudioListener activos (Unity avisa; deja solo el de la cámara).
  • Usar Play() donde querías PlayOneShot y cortar sonidos.
  • Poner el volumen del mixer en 0–1 en vez de decibelios.
  • Esperar sonido 3D con Spatial Blend en 2D.
  • Olvidar exponer el parámetro del mixer antes de usar SetFloat.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

Un AudioSource reproduce un AudioClip, captado por el único AudioListener (en la cámara). Usa Loop+Play On Awake para música y PlayOneShot para efectos que se solapan. Spatial Blend decide si el sonido es 2D (plano) o 3D (posicional). Para volúmenes por categoría y efectos, un Audio Mixer (recordando que trabaja en decibelios). Para muchos sonidos, reutiliza fuentes o aplica pooling.

Fuentes y para profundizar