🎧 Pooled Audio Event System
Pooled Audio Event System is a practical, event-driven audio toolkit for Unity projects that need clean, scalable gameplay audio without placing AudioSources on every object.
Instead of scattering AudioSources across your scene, define reusable SoundEvent assets, route playback through a centralized pooled manager, and keep your audio under control with distance culling, voice limits, loop virtualization, mixer buses, and clean debugging tools.
This package is designed for real gameplay scenarios: open-world games, survival games, shooters, AI crowds, vehicles, traffic systems, UI-heavy projects, city sandboxes, action games, and any project where many objects may try to play sound at once.
🔥 What Does It Do?
Unity AudioSources are useful, but large gameplay scenes can quickly become messy:
• Too many objects with AudioSources
• Too many sounds playing at once
• Looped sounds wasting sources while far away
• Distant sounds playing when nobody can hear them
• Repetitive audio setup across prefabs
• Hard-to-debug audio spam from AI, physics, crowds, weapons, vehicles, or UI
Pooled Audio Event System solves that by moving sound behavior into reusable SoundEvent assets and routing playback through a managed pool.
🧠 Core Concept
The system is built around three main parts:
1. SoundEvent
A ScriptableObject that defines what a sound is and how it should behave.
2. PooledAudioManager
A central manager that leases, reuses, virtualizes, and releases pooled AudioSources.
3. SoundEventPlayer
An optional AudioSource-style wrapper for users who prefer component-based workflows.
You can use the system fully through code, through the wrapper component, or mix both approaches.
✅ Core Features
🎵 SoundEvent Assets
Create reusable audio definitions with clips, volume ranges, pitch ranges, bus routing, 3D settings, culling, caps, loop behavior, and distance variants.
🔁 Pooled AudioSources
AudioSources are leased only when needed and returned to the pool when finished. Idle pooled sources are disabled automatically to keep the hierarchy clean.
📍 2D and 3D Playback
Play global UI sounds, positional gameplay sounds, force 2D playback when needed, or let SoundEvents decide.
🚦 Voice Limits
Prevent audio spam by limiting how many instances of a SoundEvent can play at once. Perfect for AI crowds, horde enemies, footsteps, impacts, weapons, and repeated UI sounds.
🌎 Distance Culling
Skip positional sounds that are too far away to matter. This helps keep large scenes clean and avoids wasting pooled sources.
📡 Distance Layers
Distance layers allow positional SoundEvents to choose different clip sets based on listener distance.
For example, a weapon, explosion, thunder strike, vehicle crash, or large creature sound can use separate near, mid, and far clips instead of playing the same sound at every range.
Each layer can define its own distance range, clips, volume multiplier, pitch multiplier, and optional mixer group override. This makes large 3D sounds feel more natural in open areas, city scenes, survival games, shooters, and other gameplay spaces where distance matters.
Tracked loops can also use distance layers, with options for locking the layer on start, reevaluating when the loop re-enters audible range, or reevaluating while moving.
🔄 Loop Virtualization
Looped sounds can stay logically tracked while out of range, then reactivate when they come back into range and pass voice/pool limits.
📡 Transform Following
One-shots and loops can follow moving transforms. Useful for characters, vehicles, weapons, creatures, alarms, projectiles, and moving emitters.
🎚️ Mixer Bus Routing
Route events through Music, SFX, UI, Gameplay, and optional extra buses for larger projects.
🧩 AudioSource-Style Wrapper
Use SoundEventPlayer if you want familiar calls like Play, PlayOneShot, PlayLoop, Stop, Restart, Toggle, Mute, and more.
📊 Runtime Debug Stats
Track active sources, pool size, active loops, virtualized loops, skipped distance requests, skipped voice-limit requests, and skipped pool-limit requests.
🛠️ Polished Inspectors
Custom inspectors for SoundEvent, SoundEventPlayer, and PooledAudioManager make the system easier to read, configure, and debug.
🎮 Included Demo Content
The package includes demo scenes that show practical usage patterns, including:
• 2D/UI audio playback
• 3D positional playback
• Distance culling behavior
• Near/mid/far distance layer behavior
• Loop virtualization
• Mixer volume slider setup
• SoundEventPlayer component workflow
• FPS-style footstep and movement audio examples
• Voice-limit stress examples
The demos are included to help you understand the workflow quickly and see how the system behaves in real scenes.
🧾 Third-Party Demo / Support Asset Notice
This package includes selected third-party demo/support assets used only for included example scenes, demo UI, documentation visuals, and sample SoundEvents.
These assets are supporting demonstration content only. They are not the primary product being sold.
The primary product is the Pooled Audio Event System code, editor tools, prefabs, demo scenes, SoundEvent workflow, and documentation.
Third-party license details are included in the package in Third-Party Notices.txt and the included license reference files.
Please review those files for source, license, and usage details.
🧱 Render Pipeline Information
The runtime audio system is render-pipeline independent and can be used in Built-in, URP, or HDRP projects.
The included demo scenes/materials support Built-in and URP. HDRP users may need to convert demo scene materials for their project, but the core audio runtime, editor tools, prefabs, SoundEvent workflow, and API do not depend on any specific render pipeline.
Optional URP demo support is included for users who want the demo scenes to display correctly in URP projects.
📝 TextMeshPro Note
The core audio system does not require TextMeshPro.
Some demo UI uses TextMeshPro. If demo text is missing in a fresh project, import TMP Essential Resources.
🚀 Good For
• Open-world games
• Survival games
• Shooters
• AI crowd scenes
• Horde games
• Vehicle systems
• Traffic systems
• City sandboxes
• Action games
• UI-heavy projects
• Audio-heavy prototypes
• Projects that need cleaner pooled playback instead of scattered AudioSources
🎯 Goal
The goal is simple:
Author sounds once, play them anywhere, avoid AudioSource spam, and keep large gameplay audio easier to manage.