我的应用程序中有大约60个声音样本。我必须在规定的时间内准确播放它,时间精度达到5毫秒。声音必须响应于用户的操作。因此,我不知道下一个声音会是什么。我正在考虑为所有声音预先创建SoundEffectInstance。创建SoundEffectInstance需要多少时间和内存?它是否是SoundEffect在内存中的完整副本或只是一些指针信息。如果我预先创建SoundEffectInstances,能否改善我的应用程序?在XNA中,是否有其他播放声音样本的方法可以尽快实现?
我的应用程序中有大约60个声音样本。我必须在规定的时间内准确播放它,时间精度达到5毫秒。声音必须响应于用户的操作。因此,我不知道下一个声音会是什么。我正在考虑为所有声音预先创建SoundEffectInstance。创建SoundEffectInstance需要多少时间和内存?它是否是SoundEffect在内存中的完整副本或只是一些指针信息。如果我预先创建SoundEffectInstances,能否改善我的应用程序?在XNA中,是否有其他播放声音样本的方法可以尽快实现?
SoundEffect
包含实际的波形数据。它需要大量内存(与波形数据所需的相同)。
SoundEffectInstance
是一个小对象,包含有关播放(位置、音量等)的数据和已分配用于播放的“声音”句柄。SoundEffect.Play
时,内部会创建一个SoundEffectInstance
。它还可以池化这些实例,因此不需要在后续调用中重新创建它们。SoundEffectInstance
需要一些时间和内存。对于以30FPS(每帧33ms)运行的游戏中的声音效果,涉及的延迟应该是无法察觉的。DynamicSoundEffectInstance
实现自己的音频混合器。这将确保声音同步到样本。