Agent skill
Unity Audio
Systeme audio complet Unity 6+ : SFX, musique, ambiance, spatialisation 3D, AudioMixer, pooling, Audio Random Container, Scriptable Audio Pipeline. Triggers: /unity-audio, /audio, audio, son, musique, AudioMixer, AudioSource, spatial audio, 3D sound, sound design, SFX
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/unity-audio
SKILL.md
Unity Audio
Ce que fait cette skill
Guide la conception et l'implementation d'un systeme audio complet dans Unity 6+. Couvre les SFX avec pooling, la musique avec crossfade, l'ambiance sonore, la spatialisation 3D, les Audio Random Containers (Unity 6+), les AudioMixer snapshots, et introduit le Scriptable Audio Pipeline (Unity 6.3+). Produit du code performant base sur des ScriptableObjects et le pattern event-driven.
Prerequis
- Unity 6.0+ (6.3+ pour Scriptable Audio Pipeline)
- Package Audio par defaut (integre)
- Connaissance basique des AudioSource, AudioClip, AudioMixer
- Skill
/unitychargee (architecture, patterns SO)
Demarrage rapide
- Decrire le besoin : type de son (SFX, musique, ambiance), contexte (2D/3D/VR)
- Suivre l'arbre de decision pour choisir le pattern adapte
- Creer l'AudioManager base sur ScriptableObject + pool de SoundEmitters
- Configurer les import settings selon le type audio (voir
references/audio-optimization.md) - Tester avec le Profiler Audio et ajuster les volumes via AudioMixer
Arbre de decision
Type de son ?
|
+-- SFX ponctuel (tir, saut, UI click) ?
| +-- Peu de variations --> AudioSource.PlayOneShot + pool
| +-- Variations (footsteps, impacts) --> Audio Random Container (Unity 6+)
|
+-- Musique (BGM, themes) ?
| +-- Un seul theme --> AudioSource loop
| +-- Transitions entre themes --> Crossfade 2 sources
| +-- Musique dynamique --> AudioMixer snapshots
|
+-- Ambiance (vent, foule, pluie) ?
| +-- Globale --> AudioSource loop sur Camera/Manager
| +-- Locale (zone) --> AudioSource 3D + trigger zone
|
+-- Son spatial 3D ?
| +-- Standard --> spatialBlend = 1, Logarithmic rolloff
| +-- VR/AR --> Spatializer plugin (Steam Audio, Resonance)
|
+-- Custom DSP / synthese ?
+-- Unity 6.3+ --> Scriptable Audio Pipeline
Guide etape par etape
Etape 1 : Detecter l'AudioMixer existant
Verifier si un AudioMixer existe dans le projet. Sinon, en creer un avec les groupes :
- Master (volume global)
- SFX (effets sonores)
- Music (musique)
- Ambiance (sons d'ambiance)
- UI (sons d'interface)
Exposer les parametres de volume de chaque groupe (SFXVolume, MusicVolume, etc.).
Etape 2 : Setup AudioManager SO
Creer le systeme base sur ScriptableObjects :
AudioCueSO: contient les clips, plages de volume/pitch, groupe mixer cibleAudioCueEventChannelSO: canal d'evenement pour decoupler les demandes de lectureAudioManagerMonoBehaviour : ecoute le canal, gere le pool de SoundEmitters
Voir references/audio-patterns.md pour l'implementation complete (AudioCueSO, SoundEmitter, pool, crossfade).
Etape 3 : Configurer les import settings
Pour chaque clip audio, appliquer les settings optimaux selon son type :
- SFX courts : Decompress On Load, Vorbis 70%, Force Mono
- Musique : Streaming, Vorbis 50%, Stereo
- Ambiance : Streaming, Vorbis 50%, Force Mono
- UI : Decompress On Load, PCM, Force Mono
Voir references/audio-optimization.md pour le tableau complet.
Etape 4 : Implementer les patterns
Selon l'arbre de decision :
- SFX : pool de SoundEmitters avec auto-return
- Musique : crossfade entre 2 AudioSources via
Awaitable - Ambiance : AudioSource 3D avec trigger zones
- Spatialisation : configurer rolloff, min/max distance, doppler
- AudioMixer Snapshots : transitions d'ambiance (Combat, Pause, Underwater)
Voir references/audio-advanced.md pour les patterns Mixer snapshots, spatial 3D et Audio Random Container.
Etape 5 : Tester et profiler
- Ouvrir Window > Analysis > Audio Profiler
- Verifier le nombre de voix actives (budget : 32 mobile, 64 desktop)
- Verifier la memoire audio dans le Profiler (onglet Memory > Audio)
- Tester les transitions de snapshots AudioMixer
- Valider la spatialisation 3D en scene avec Gizmos audio
Regles strictes
TOUJOURS :
- Utiliser
PlayOneShot()pour les SFX ponctuels (pasPlay()) - Passer par un pool de SoundEmitters (jamais
Instantiatepar son) - Exposer les volumes via
AudioMixer.SetFloat()(pas viaAudioSource.volumedirect) - Configurer les import settings AVANT d'utiliser un clip en jeu
- Utiliser
AudioMixerGroupsur chaque AudioSource pour le routing - Convertir les volumes en dB :
Mathf.Log10(value) * 20f - Limiter les voix simultanees par categorie (max voices)
JAMAIS :
new AudioClip()ou charger des clips a chaque frameAudioSource.Play()pour des SFX rapides et superposes- Oublier de retourner un emitter au pool apres lecture
- Laisser un AudioSource en
Decompress On Loadpour un fichier > 500 Ko - Utiliser
Destroy()sur des GameObjects audio (recycler via pool) - Ignorer le
spatialBlend(defaut 0 = 2D, souvent oublie pour le 3D)
Skills connexes
/unity-code-gen: generer le code AudioManager, SoundEmitter, AudioCueSO/proto: prototype rapide avec audio placeholder/perf-audit: detecter les anti-patterns audio (memoire, voix)/unity-test: tester les systemes audio en EditMode
Troubleshooting
| Probleme | Cause probable | Solution |
|---|---|---|
| Son ne joue pas | AudioSource desactivee ou volume a 0 | Verifier enabled, volume, AudioMixerGroup non mute |
| Son 3D inaudible | spatialBlend = 0 (mode 2D) |
Mettre spatialBlend = 1 et verifier maxDistance |
| Clic/pop au debut du clip | Clip mal trimme ou decompression | Trimmer le silence, utiliser fade-in dans le clip |
| Latence SFX sur mobile | Streaming sur SFX courts |
Passer en Decompress On Load pour clips < 1s |
| Memoire audio explose | Tous les clips en Decompress On Load |
Streaming pour musique/ambiance, compresser |
| Crossfade brutal | Pas de courbe de transition | Utiliser Mathf.SmoothStep ou courbe logarithmique |
| AudioMixer.SetFloat echoue | Parametre non expose | Clic droit sur le param dans l'Inspector > Expose |
| Sons identiques repetitifs | Pas de variation pitch/volume | Utiliser Audio Random Container ou randomiser manuellement |
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?