Безопасный для памяти способ воспроизведения аудио в XNA
Я использую XNA SoundEffect
класс для воспроизведения звуков в игровом проекте. Хотя управление памятью напрямую SoundEffect.Play()
Эффекты для меня относительно ясны (SoundEffectInstances
внутренне создаются и добавляются в списки, а их память удаляется после остановки звука), я хотел бы знать, что рекомендуется делать при непосредственном создании SoundEffectInstances
например, для управления воспроизведением аудио (громкостью и т. д.) после instance.Play()
,
В настоящее время для тех звуковых эффектов, которые мне нужно контролировать после создания, я использую специальный класс, который в своем конструкторе создает новый экземпляр с помощью:
instance = LoadEffect(indexInSoundLibrary).CreateInstance();
в то время как в деструкторе этого класса вызывает:
instance.Dispose();
Таким образом, я использую коллекцию ~400 звуковых файлов (только их имена), которые динамически загружаются при необходимости. Имеет ли смысл сохранять ряд SoundEffectInstances
в памяти (например, для тех аудиофайлов в коллекции, которые обычно воспроизводятся путем создания SoundEffectInstance
(а не путем непосредственного использования SoundEffect.Play()
)?
Есть ли ограничения того, сколько SoundEffectInstances
можно хранить в памяти одновременно?
Просто для дополнительной информации, я использую несколько ContentManager и регулярно Unload
неиспользованные звуки.