Stop rewriting audio systems. Ship the game.
Every project starts the same way — a few AudioSource components, a couple of magic strings, and a plan to "clean it up later." Snog's Audio Manager is the clean version, built once so you never have to build it again.
Drop it into your project, point it at your audio folder, and hit Scan → Generate → Assign. Your entire audio library is classified, wrapped in ScriptableObjects, and loaded into the right libraries automatically. A generated AudioNames.cs file gives you autocomplete and compile-time safety for every sound in your project from that moment on.
SFX
Play 2D sounds instantly for UI and gameplay events. Play 3D sounds through an AudioSource pool that reuses voices and avoids runtime allocations. Multi-variant SoundClipData assets let you store multiple takes of the same sound — a random one plays each time, keeping repeated SFX feeling fresh. If the pool ever runs out, a rate-limited warning tells you exactly which clip was dropped and which field to increase.
AudioManager.Instance.PlaySfx2D(SoundNames.ButtonClick);
AudioManager.Instance.PlaySfx3D(SoundNames.Explosion, transform.position);
Music
Play and stop tracks by name with optional fade-in, fade-out, and delayed start. Use CrossFadeMusic to transition between tracks with a simultaneous fade — no silent gap, no timing math.
AudioManager.Instance.PlayMusic(MusicNames.MainTheme, fadeIn: 1f);
AudioManager.Instance.CrossFadeMusic(MusicNames.CombatLoop, crossFadeDuration: 1.5f);
AudioMixer & Snapshots
Built-in volume control for Master, Music, Ambient, and FX routed through your AudioMixer's exposed parameters. Add any number of named snapshots to the AudioManager inspector and transition between them at runtime with a single call — no hardcoded references anywhere in your scripts.
Ambience — Profiles, Zones, and Scene Emitters
This is what makes Snog different from every basic audio manager.
AmbientEmitter components live in your scene and represent real sound sources — a river, a campfire, a cave draft. AmbientProfile assets define what a location should sound like: a forest might want birds at full volume, wind at 40%, fire at zero. AmbientZone trigger volumes apply those profiles when the player enters, with no code required.
The system supports stacked profiles — a forest zone, a rain zone, and a river zone can all be active simultaneously. A priority-weighted voice budget scores every emitter by track priority, emitter priority, volume, and distance to the listener, and selects the most relevant ones up to maxAmbientVoices. The rest fade out gracefully. Large scenes stay performant automatically.
Events & Callbacks
UnityEvent hooks for the full audio lifecycle — music started, music stopped, music finished naturally, SFX played, ambient profile pushed, ambient profile popped. Wire them in the Inspector with no code, or subscribe in scripts.
Editor Tooling
The AudioManager inspector includes a full runtime testing panel: play any sound, any music track, push and pop ambient profiles, switch snapshots, and watch live dB meters for every mixer group — all without leaving the editor. An emitter browser lists every AmbientEmitter in the scene so you can ping, select, and preview them directly.
What's included
• AudioManager singleton — DontDestroyOnLoad, zero setup code
• AudioSourcePool — pooled 3D spatial sources with rate-limited exhaustion warnings
• AudioTrigger — inspector-driven gameplay trigger for SFX, music, and ambient events
• SoundLibrary, MusicLibrary, AmbientLibrary — name-based clip resolution
• SoundClipData, MusicTrack, AmbientTrack — ScriptableObject clip assets
• AmbientEmitter, AmbientProfile, AmbientZone — full 3D ambience system
• Scan → Generate → Assign import pipeline with AudioNames.cs generation
• Full source code
Requirements:
Who is this for?
Indie developers who want a production-grade audio pipeline without writing one. Teams who need every project to sound consistent and every programmer to be able to find and call sounds safely. Projects where ambience matters — open worlds, horror, survival, exploration, anything where the world should feel alive.
If you've ever grepped your codebase for a magic string to rename a sound, this asset solves that permanently.
Questions and feedback welcome at snogdev@gmail.com
Asset uses Orbitron font under SIL Open Font License 1.1, and demo audio under CC0; see Third-Party Notices.txt file in package for details.