- Home /
Playing many audioclips with PlayOneShot causes all sound to cut out.
I'm nearly finished my game, and just started adding sound.
It's an arcade shooter, and I'm just implementing the gunshot sounds.
Each time I fire, I instantiate a projectile, which contains a script which has
PlayOneShot(shotSound, 1);
in the Start function.
If somewhere around 30 shots are fired within a certain amount of time, the audio begins to stutter (including BG music), and ultimately cuts out until most of the One Shot Audio instances are gone, at which point audio resumes as normal.
This POST and this POST (though they are old) seem to indicate that Unity starts to crap out around 32 sounds (which seems to fit the behaviour I'm seeing).
Is this just a limitation on PlayOneShot, or Unity's audio system as a whole?
I'd really like to play a shot sound every time a bullet is fired, so is there an alternative to PlayOneShot?
I can't attach an audiosource to my bullet and playOnAwake because, if the bullet is destroyed by hitting an enemy, the sound cuts out.
I considered instantiating another object with an audiosource and playOnAwake that destroys itself when the clip is done playing, but this seems to me like it's just replicating the One Shot Audio gameobject's behaviour, presumably in a less efficient way. Would this approach be an option?
The other two options are to drop the duration of the audioclip (the best solution I can come up with at the moment), or to count the number of One Shot Audio objects in the scene before deciding to call PlayOneShot again. Maybe both.
What are your suggestions?