Безопасный для памяти способ воспроизведения аудио в XNA

Я использую XNA SoundEffect класс для воспроизведения звуков в игровом проекте. Хотя управление памятью напрямую SoundEffect.Play()Эффекты для меня относительно ясны (SoundEffectInstances внутренне создаются и добавляются в списки, а их память удаляется после остановки звука), я хотел бы знать, что рекомендуется делать при непосредственном создании SoundEffectInstances например, для управления воспроизведением аудио (громкостью и т. д.) после instance.Play(),

В настоящее время для тех звуковых эффектов, которые мне нужно контролировать после создания, я использую специальный класс, который в своем конструкторе создает новый экземпляр с помощью:

instance = LoadEffect(indexInSoundLibrary).CreateInstance();

в то время как в деструкторе этого класса вызывает:

instance.Dispose();

Таким образом, я использую коллекцию ~400 звуковых файлов (только их имена), которые динамически загружаются при необходимости. Имеет ли смысл сохранять ряд SoundEffectInstances в памяти (например, для тех аудиофайлов в коллекции, которые обычно воспроизводятся путем создания SoundEffectInstance (а не путем непосредственного использования SoundEffect.Play())?

Есть ли ограничения того, сколько SoundEffectInstances можно хранить в памяти одновременно?

Просто для дополнительной информации, я использую несколько ContentManager и регулярно Unload неиспользованные звуки.

0 ответов

Другие вопросы по тегам