Reproductor d'àudio per a Unity

Reproducció centralitzada amb assets de definició, emissors i senyals tipades per a sons d'UI i de joc.

Per a què serveix aquest sistema

Tot projecte Unity acaba necessitant el mateix: un únic lloc on demanar un efecte de so. Clics de botó, transicions de menú, confirmacions de modal i esdeveniments de joc volen un clip, però cada prefab inventa el seu propi cablejat d'AudioSource. El resultat és un projecte on el mateix so de clic està duplicat en tres prefabs, els volums no quadren i descobrir quin AudioSource reprodueix què es converteix en una tasca de depuració pròpia.

El Reproductor d'àudio de Serenity centralitza la reproducció de clips. Descrius els clips mitjançant definicions, demanes al servei que els reprodueixi per referència o senyal, i els emissors s'encarreguen de l'AudioSource real al costat de Unity.

El problema a Unity

Els AudioSource de Unity són fàcils d'afegir i difícils d'organitzar. Sense una capa al damunt, cada botó agafa un clip i cada sistema acaba amb el seu propi codi d'àudio. Els volums deriven, els clips se solapen i pausar tota la pila d'àudio es converteix en un bucle manual sobre escenes. El feedback sonor d'UI, en particular, sol estar cuit dins del prefab, cosa que fa impossible retematitzar l'UI sense tocar àudio al mateix temps.

L'altra meitat del problema són les senyals. Quan el codi de joc vol reproduir un so no hauria de necessitar una referència directa a un AudioSource sobre un GameObject concret. Aquest acoblament és el que fa que els prefabs d'UI siguin difícils de reutilitzar entre pantalles.

Com ho aborda Serenity

Serenity exposa la reproducció com a casos d'ús sobre el servei AudioPlayer: AudioPlayerPlayClip, AudioPlayerPauseAllClips, AudioPlayerResumeAllClips i AudioPlayerStopAllClips. Els clips es descriuen mitjançant IAudioPlayerClipDefinition, s'agrupen en entrades AudioPlayerGroup i es reprodueixen per instàncies AudioPlayerEmitter creades a través d'IAudioPlayerEmitterFactory.

El sistema també publica senyals com PlayAudioClipSignal i PlayAudioClipFromGameSettingsSignal. Qualsevol codi del projecte pot llançar una senyal per reproduir un clip sense resoldre el servei directament. Els Temes d'UI poden carregar referències de so, així que menús i modals reben el seu feedback sonor des del tema actiu.

Com encaixa a Serenity

El Reproductor d'àudio viu al namespace Serenity.AudioPlayer. Les entitats de Domini descriuen clips, grups i emissors. La capa d'Aplicació exposa el servei, les factories i els casos d'ús. La capa d'Infraestructura aporta la implementació Unity, inclòs l'emissor recolzat per AudioSource, l'editor del servei i l'adaptador d'interfície UnityAudioPlayerGateway amb què parla la resta del sistema.

El Reproductor d'àudio connecta amb el Sound Mixer per als volums per categoria, amb Game Settings per als volums persistents, amb l'Event Dispatcher per a les senyals de reproducció i pausa, i amb els Temes d'UI perquè menús i modals declarin el seu feedback sonor juntament amb els seus visuals.

Flux de treball pràctic

  1. Autora definicions de clip per als sons que vulguis exposar, agrupats per propòsit o escena.
  2. Configura un emissor d'àudio amb CreateAudioPlayerEmitterInput quan necessitis un nou destí de reproducció.
  3. Dispara sons cridant AudioPlayerPlayClip amb l'input corresponent o llançant PlayAudioClipSignal.
  4. Encamina els sons d'UI a través del tema d'UI actiu perquè menús i modals siguin coherents.
  5. Fes servir AudioPlayerPauseAllClips i AudioPlayerResumeAllClips quan el joc es pausa o es reprèn.
  6. Associa un volum d'efectes a Game Settings i al Sound Mixer perquè el jugador pugui ajustar-lo.

Què inclou

  • Definicions de clip descrites mitjançant IAudioPlayerClipDefinition
  • Casos d'ús AudioPlayerPlayClip, AudioPlayerPauseAllClips, AudioPlayerResumeAllClips i AudioPlayerStopAllClips
  • Factoria d'emissors que crea emissors recolzats per AudioSource en temps d'execució
  • Senyals PlayAudioClipSignal i PlayAudioClipFromGameSettingsSignal per a dispars desacoblats
  • Grups de reproducció per organitzar clips per propòsit
  • Adaptador d'interfície UnityAudioPlayerGateway entre la capa d'aplicació i la de Unity
  • Integració amb Sound Mixer per a volums per categoria i amb Game Settings per a persistència
  • Instal·lador que registra el servei per a tot el projecte

Quan fer-lo servir

  • Projectes que necessiten feedback sonor d'UI i clips de joc dirigits des del mateix servei.
  • Equips que volen sons associats a temes i senyals en lloc d'AudioSource solts en prefabs.
  • Jocs que necessiten pausar i reprendre tots els sons alhora quan el joc canvia d'estat.
  • Bases de codi que volen una separació neta entre efectes de so i pistes de música.

Sistemes relacionats

Utilitza Serenity quan vulguis una pipeline d'efectes que ja coopera amb temes, mixers i ajustos, però que et segueix deixant triar els clips i volums des del teu propi projecte de Unity.

Tornar a la pàgina principal