Sound Mixer per a Unity

Ajustos de volum per categoria que dirigeixen el teu Audio Mixer de Unity i persisteixen a través de Game Settings.

Per a què serveix aquest sistema

Els sliders de volum a Unity semblen fàcils fins que els cableges. El mixer espera un valor logarítmic, el teu slider és lineal, el valor desat ha de tornar des de PlayerPrefs i el codi de joc vol saber si la música està silenciada. Cada projecte acaba redescobrint la mateixa conversió, el mateix patró de listener i el mateix set de bugs al voltant de l'ordre d'arrencada.

El Sound Mixer de Serenity embolcalla un Audio Mixer de Unity rere una capa de volum basada en servei. Els volums s'exposen mitjançant casos d'ús, s'organitzen per categoria i es connecten a Game Settings perquè la tria del jugador sobrevisqui entre sessions.

El problema a Unity

Un menú d'ajustos real necessita més d'un volum. Mestre, música, efectes, veu i ambient són categories comunes, i cadascuna ha de mapejar a un paràmetre exposat específic d'un Audio Mixer de Unity. Sense una abstracció, cada slider cou el nom del paràmetre, cada slider duplica la conversió a decibels i cada recàrrega dels ajustos ha d'empènyer els valors al mixer a mà.

Els paràmetres del mixer també s'esmunyen a la lògica de negoci. Preguntar si la música està silenciada no hauria de requerir saber el nom del paràmetre exposat. Persistir i restaurar el volum a l'inici del joc no hauria de requerir saber que el valor viu a PlayerPrefs.

Com ho aborda Serenity

Serenity exposa el mixer a través d'ISoundMixerService amb els casos d'ús SoundMixerSetVolume i el seu input d'obtenció de volum corresponent. Els ajustos es descriuen mitjançant ISoundMixerSettings a la capa de Domini. La implementació Unity, UnitySoundMixerService, mapeja categories a paràmetres exposats d'un Audio Mixer fent servir UnitySoundMixerSettings i UnityAudioMixerReturn.

El servei es registra a través de UnitySoundMixerInstaller. Game Settings el consumeix per dirigir volums persistents per categoria, i el menú d'ajustos llegeix i escriu a través del mateix servei sense tocar el mixer directament.

Com encaixa a Serenity

El Sound Mixer viu al namespace Serenity.SoundMixer i segueix l'estructura per capes de la foundation. Les entitats de Domini descriuen el contracte d'ajustos del mixer. La capa d'Aplicació exposa el servei i els casos d'ús. La capa d'Infraestructura cableja el suport per a Audio Mixer de Unity, inclosos editors d'ajustos i l'asset UnitySoundMixerSettings.

El Sound Mixer connecta directament amb Game Settings perquè cada categoria de volum tingui un valor persistent. Coopera amb el Reproductor d'àudio i el Reproductor de música perquè les seves categories passin pel mixer. El Sistema de Menús i el de Modals acaben beneficiant-se perquè els seus sons d'UI hereten els mateixos volums per categoria.

Flux de treball pràctic

  1. Crea un Audio Mixer de Unity i exposa els paràmetres de volum que vulguis controlar.
  2. Configura UnitySoundMixerSettings amb el mapatge de categoria a paràmetre exposat.
  3. Deixa que l'instal·lador del Sound Mixer registri el servei a la pipeline d'inicialització.
  4. Associa els sliders del menú d'ajustos a SoundMixerSetVolume per categoria.
  5. Persisteix els valors triats a través de Game Settings perquè es restaurin a la sessió següent.
  6. Verifica que la reproducció d'àudio i música respecta els volums per categoria.

Què inclou

  • ISoundMixerService amb SoundMixerSetVolume i cas d'ús d'obtenció de volum corresponent
  • Model de volum per categoria descrit per ISoundMixerSettings
  • UnitySoundMixerSettings mapejant categories a paràmetres de l'Audio Mixer de Unity
  • Suport d'editor a través de UnitySoundMixerSettingsEditor i UnitySoundMixerServiceEditor
  • Instal·lador que registra el servei per a tot el projecte
  • Integració amb Game Settings perquè cada categoria de volum es persisteixi
  • Dirigeix la reproducció del Reproductor d'àudio i de música a través del mateix mixer
  • Separació neta entre l'Audio Mixer de Unity i la resta de la foundation

Quan fer-lo servir

  • Projectes amb un menú d'ajustos que exposa més d'un slider de volum.
  • Jocs on les preferències de volum han de sobreviure entre sessions.
  • Equips que volen que els volums de música i efectes passin realment per un Audio Mixer de Unity.
  • Bases de codi que necessiten consultar, fixar i persistir volums per categoria sense referenciar l'asset del mixer directament.

Sistemes relacionats

Utilitza Serenity quan vulguis una capa de mixer que ja coopera amb la reproducció d'àudio, la persistència d'ajustos i els menús, però que et segueix deixant controlar quines categories existeixen i com es mapegen al teu Audio Mixer.

Tornar a la pàgina principal