Accueil Github ↗
Itération 3

Système audio

Architecture audio de Cogni-Actif : AudioMixer centralisé, SoundDatabase, gestion du volume et utilitaires plug & play.

Le dossier Commons/AudioSystem/ gère tout ce qui est lié au son du jeu. L’architecture repose sur un AudioMixer centralisé couplé à un Singleton.

[!NOTE] AudioManager.cs est l’ancienne version, entièrement commentée. Toute la logique active est dans AudioManagerR1.cs.

SoundDatabase — catalogue des sons

Singleton global (AbstractSingleton) qui charge et garde en mémoire toutes les références audio au démarrage. N’importe quel script peut demander un son sans avoir à le glisser dans l’inspecteur Unity.

CatégorieContenu
PlaylistsListes prêtes pour les musiques aléatoires selon l’ambiance (apaPlaylist, rcPlaylist, menuPlaylist…)
MusiquesPistes individuelles triées par énergie : Calm, Mixed, Turbulent
SFXEffets courts : boutons, applaudissements, bonne/mauvaise réponse, feu de camp

AudioManagerR1 — gestion du son

Singleton global avec trois AudioSource indépendants (Musique, SFX, Voix), chacun envoyé vers l’AudioMixer Unity.

Variables importantes

VariableTypeDescription
musicSource, sfxSource, voiceSourceAudioSourceLes trois canaux audio
_activeSFXSourcesList<AudioSource>Trace les sons joués simultanément pour pouvoir tous les mettre en pause
onVolumeChangedAction (event)Déclenché dès que le volume change, pour mettre à jour l’interface

Méthodes clés

MéthodeDescription
PlayMusic(...) / PlayVoice(...)Lance un fichier audio sur le canal correspondant
PlayRandomMusic(List)Pioche une musique au hasard dans une playlist de la SoundDatabase
SetMusicVolume(...)Convertit le volume (0–1) en décibels logarithmiques (Mathf.Log10(volume) * 20) pour l’AudioMixer et sauvegarde dans les PlayerPrefs
FadeMusic(...)Coroutine qui baisse doucement le volume au lieu de couper brutalement

SliderVolumeGUIPro — contrôleur de volume

Script attaché aux sliders du menu des paramètres. Intercepte les changements de l’utilisateur, met à jour l’icône haut-parleur (allumé/coupé), et transmet la valeur à AudioManagerR1.

ChampTypeDescription
_sliderTypeEnumIndique si ce slider contrôle la Musique, les SFX ou la Voix
_iconVolume, _volumeOnSprite, _volumeOffSpriteImage / SpriteBascule l’icône sur “Mute” quand le volume est à zéro
MéthodeDescription
Start()Lit le volume sauvegardé pour positionner le slider au bon endroit. S’abonne aussi à AudioManagerR1.onVolumeChanged pour rester synchronisé.
SetVolume(float value)Appelé par l’événement du slider. Dispatche la valeur à la bonne méthode de AudioManagerR1 selon _sliderType.

Utilitaires plug & play

Ces deux scripts se glissent sur des objets dans l’éditeur sans code supplémentaire.

ScriptRôle
ButtonSoundÀ attacher sur n’importe quel bouton. Au démarrage, il s’abonne au clic et demande à l’AudioManager de jouer sfx_clickButton_01.
PlayAmbianceSoundÀ attacher sur un objet de décor (ex. feu de camp). Au Start(), lance l’effet sonore spécifié, en boucle ou non selon isLooping.