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.csest l’ancienne version, entièrement commentée. Toute la logique active est dansAudioManagerR1.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égorie | Contenu |
|---|---|
| Playlists | Listes prêtes pour les musiques aléatoires selon l’ambiance (apaPlaylist, rcPlaylist, menuPlaylist…) |
| Musiques | Pistes individuelles triées par énergie : Calm, Mixed, Turbulent |
| SFX | Effets 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
| Variable | Type | Description |
|---|---|---|
musicSource, sfxSource, voiceSource | AudioSource | Les trois canaux audio |
_activeSFXSources | List<AudioSource> | Trace les sons joués simultanément pour pouvoir tous les mettre en pause |
onVolumeChanged | Action (event) | Déclenché dès que le volume change, pour mettre à jour l’interface |
Méthodes clés
| Méthode | Description |
|---|---|
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.
| Champ | Type | Description |
|---|---|---|
_sliderType | Enum | Indique si ce slider contrôle la Musique, les SFX ou la Voix |
_iconVolume, _volumeOnSprite, _volumeOffSprite | Image / Sprite | Bascule l’icône sur “Mute” quand le volume est à zéro |
| Méthode | Description |
|---|---|
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.
| Script | Rô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. |