Sound Mixer para Unity

Ajustes de volumen por categoría que dirigen tu Audio Mixer de Unity y persisten a través de Game Settings.

Para qué sirve este sistema

Los sliders de volumen en Unity parecen fáciles hasta que los cableas. El mixer espera un valor logarítmico, tu slider es lineal, el valor guardado tiene que volver desde PlayerPrefs y el código de juego quiere saber si la música está silenciada. Cada proyecto acaba redescubriendo la misma conversión, el mismo patrón de listener y el mismo set de bugs alrededor del orden de arranque.

El Sound Mixer de Serenity envuelve un Audio Mixer de Unity tras una capa de volumen basada en servicio. Los volúmenes se exponen mediante casos de uso, se organizan por categoría y se conectan a Game Settings para que la elección del jugador sobreviva entre sesiones.

El problema en Unity

Un menú de ajustes real necesita más de un volumen. Maestro, música, efectos, voz y ambiente son categorías comunes, y cada una tiene que mapear a un parámetro expuesto específico de un Audio Mixer de Unity. Sin una abstracción, cada slider cuece el nombre del parámetro, cada slider duplica la conversión a decibelios y cada recarga de los ajustes tiene que empujar los valores al mixer a mano.

Los parámetros del mixer también se filtran a la lógica de negocio. Preguntar si la música está silenciada no debería requerir saber el nombre del parámetro expuesto. Persistir y restaurar el volumen al iniciar el juego no debería requerir saber que el valor vive en PlayerPrefs.

Cómo lo aborda Serenity

Serenity expone el mixer a través de ISoundMixerService con los casos de uso SoundMixerSetVolume y su correspondiente input de obtención de volumen. Los ajustes se describen mediante ISoundMixerSettings en la capa de Dominio. La implementación Unity, UnitySoundMixerService, mapea categorías a parámetros expuestos de un Audio Mixer usando UnitySoundMixerSettings y UnityAudioMixerReturn.

El servicio se registra a través de UnitySoundMixerInstaller. Game Settings lo consume para dirigir volúmenes persistentes por categoría, y el menú de ajustes lee y escribe a través del mismo servicio sin tocar el mixer directamente.

Cómo encaja en Serenity

El Sound Mixer vive en el namespace Serenity.SoundMixer y sigue la estructura por capas de la foundation. Las entidades de Dominio describen el contrato de ajustes del mixer. La capa de Aplicación expone el servicio y los casos de uso. La capa de Infraestructura cablea el soporte para Audio Mixer de Unity, incluidos editores de ajustes y el asset UnitySoundMixerSettings.

El Sound Mixer conecta directamente con Game Settings para que cada categoría de volumen tenga un valor persistente. Coopera con el Reproductor de audio y el Reproductor de música para que sus categorías pasen por el mixer. El Sistema de Menús y el de Modales acaban beneficiándose porque sus sonidos de UI heredan los mismos volúmenes por categoría.

Flujo de trabajo práctico

  1. Crea un Audio Mixer de Unity y expón los parámetros de volumen que quieras controlar.
  2. Configura UnitySoundMixerSettings con el mapeo de categoría a parámetro expuesto.
  3. Deja que el instalador del Sound Mixer registre el servicio en la pipeline de inicialización.
  4. Asocia los sliders del menú de ajustes a SoundMixerSetVolume por categoría.
  5. Persiste los valores elegidos a través de Game Settings para que se restauren en la siguiente sesión.
  6. Verifica que la reproducción de audio y música respeta los volúmenes por categoría.

Qué incluye

  • ISoundMixerService con SoundMixerSetVolume y caso de uso de obtención de volumen correspondiente
  • Modelo de volumen por categoría descrito por ISoundMixerSettings
  • UnitySoundMixerSettings mapeando categorías a parámetros del Audio Mixer de Unity
  • Soporte de editor a través de UnitySoundMixerSettingsEditor y UnitySoundMixerServiceEditor
  • Instalador que registra el servicio para todo el proyecto
  • Integración con Game Settings para que cada categoría de volumen se persista
  • Dirige la reproducción del Reproductor de audio y de música a través del mismo mixer
  • Separación limpia entre el Audio Mixer de Unity y el resto de la foundation

Cuándo usarlo

  • Proyectos con un menú de ajustes que expone más de un slider de volumen.
  • Juegos donde las preferencias de volumen deben sobrevivir entre sesiones.
  • Equipos que quieren que los volúmenes de música y efectos pasen realmente por un Audio Mixer de Unity.
  • Bases de código que necesitan consultar, fijar y persistir volúmenes por categoría sin referenciar el asset del mixer directamente.

Sistemas relacionados

Usa Serenity cuando quieras una capa de mixer que ya coopera con la reproducción de audio, la persistencia de ajustes y los menús, pero que te sigue dejando controlar qué categorías existen y cómo se mapean a tu Audio Mixer.

Volver a la página principal