Есть ли причина, по которой вы хотите "сэкономить на сборе мусора"?Если вы не столкнетесь с реальными проблемами производительности, вам, скорее всего, не о чем беспокоиться.Исходя из личного опыта, вы можете воспроизводить не менее десятка звуков в быстрой последовательности (используя SoundEffect.Play()
) без каких-либо проблем.Однако, если вы чувствуете, что в вашей игре много коллизий, вы можете сделать две вещи:
Во-первых, подумайте о создании простого класса SoundPlayer
, который обрабатывает все звуки, которые вы играете, и всякий раз, когда вы обнаруживаете болееоколо 10 игр одновременно, не позволяйте воспроизвести следующий.Не похоже, чтобы игрок заметил пропущенные звуки, если происходит много столкновений.
Во-вторых, посмотрите здесь (http://forums.create.msdn.com/forums/t/91165.aspx) о том, как использовать DynamicSoundEffectInstance
для предварительного смешивания звуков. Это немного сложнее, но если посмотреть в будущее и смешать все звуки, которые одля воспроизведения в одном буфере вы в значительной степени гарантируете нулевую задержку, поскольку эффективно воспроизводится только один звук (или один буфер аудиопотока).