我正在使用XNA的SoundEffect
课程来播放游戏项目中的声音。虽然直接SoundEffect.Play()
效果的内存管理对我来说比较清楚(SoundEffectInstances
在内部创建并添加到列表中,并且在声音停止时删除了它们的内存),我想知道建议的是什么直接创建SoundEffectInstances
时要做的事情在instance.Play()
之后控制音频播放(音量等)。
目前,对于我需要在创建后控制的声音效果,我使用一个特殊的类,在其构造器中通过以下方式创建一个新实例:
instance = LoadEffect(indexInSoundLibrary).CreateInstance();
在该类的析构函数中调用:
instance.Dispose();
总之,我使用了大约400个声音文件(只是他们的文件名)的集合,它们会在需要时动态加载。将大量SoundEffectInstances
保留在内存中是否有意义(例如,通常通过创建SoundEffectInstance
(而不是直接使用SoundEffect.Play()
)来播放集合中的那些音频文件?
一次可以在内存中保留多少SoundEffectInstances
是否存在任何限制?
仅为了解更多信息,我使用多个ContentManagers并定期Unload
未使用的声音。