Audio XNA中音频播放的内存安全方式

Audio XNA中音频播放的内存安全方式,audio,memory,xna,soundeffect,soundeffectinstance,Audio,Memory,Xna,Soundeffect,Soundeffectinstance,我正在使用XNA的SoundEffect类在游戏项目中播放声音。而直接SoundEffect.Play()ing effects的内存管理对我来说相对清晰(SoundEffectInstances是在内部创建并添加到列表中的,它们的内存在声音停止时被删除),我想知道在直接创建SoundEffectInstances时建议做什么,例如在instance.Play()之后控制音频播放(音量等) 目前,对于创建后需要控制的声音效果,我使用一个特殊类,该类在其构造函数中通过以下方式创建一个新实例: in

我正在使用XNA的
SoundEffect
类在游戏项目中播放声音。而直接
SoundEffect.Play()
ing effects的内存管理对我来说相对清晰(
SoundEffectInstances
是在内部创建并添加到列表中的,它们的内存在声音停止时被删除),我想知道在直接创建
SoundEffectInstances
时建议做什么,例如在
instance.Play()之后控制音频播放(音量等)

目前,对于创建后需要控制的声音效果,我使用一个特殊类,该类在其构造函数中通过以下方式创建一个新实例:

instance=LoadEffect(indexInSoundLibrary).CreateInstance()

在该类的析构函数中调用:

instance.Dispose()

总之,我使用了大约400个声音文件的集合(只是它们的文件名),这些文件在需要时动态加载。在内存中保留大量
SoundEffectInstance
是否有意义(例如,对于集合中通常通过创建
SoundEffectInstance
播放的音频文件(而不是直接使用
SoundEffect.Play()

一次可以在内存中保存多少个
SoundEffectInstances
是否有任何限制

为了获得更多信息,我使用了多个ContentManager,并定期卸载未使用的声音