这是困扰我的事情。如果我通过SoundEffectInstance
创建SoundEffect.CreateInstance()
我打算在我完成它时将其丢弃。据我所知,SoundEffect.CreateInstance()
不使用ContentManager
。
它是从文件加载还是在内存中保存副本?从文件加载显然会非常慢: - /
答案 0 :(得分:3)
这是实施细节。您不确定无关紧要,平台之间可能会有所不同,将来可能会发生变化。
然而,您可以做出有根据的猜测:首先,SoundEffectInstance
存在,并且您将声音文件加载到SoundEffect
这一事实表明SoundEffect
可能负责保持声音在记忆中的影响。 SoundEffect.FromStream
和基于缓冲区的SoundEffect
构造函数的存在强烈表明SoundEffect
必须具有将声音缓冲区保留在内存中的机制。因此,假设从文件加载SoundEffect
时它使用相同的机制是相当安全的。
如果它非常重要,您可以在加载SoundEffect
后删除或修改声音文件,然后创建实例来测试它。
与往常一样,如果性能非常重要,您应该衡量。
当然,创建SoundEffectInstance
会分配资源(音频语音,托管和可能非托管内存)。因此,如果您可以避免这种情况,那么您应该定期创建它 - 例如通过池化和重用实例。当您使用SoundEffect.Play
时,SoundEffect
会在内部为您管理SoundEffectInstance
个对象池。