Xna SoundEffect和SoundEffectInstance类之间的差异

Xna SoundEffect和SoundEffectInstance类之间的差异,xna,audio,Xna,Audio,就像前面提到的,我不明白使用这些类有什么区别。每门课的优点和局限性是什么。我读了很多教程,但仍然不能决定我应该做什么 为了让事情更清楚,我买了AudioModule、AudioEmitterComponent和AudioListenerComponent。(我们的游戏是基于组件的。当你创建一个对象作为一些声音的来源(怪物或其他东西)时,我添加了发射器组件。然后我遇到了问题。我不知道如何做到最好。首先,我希望音频模块得到列表,听众也得到列表(还有wave和Soundbank的列表)现在我遇到的问题

就像前面提到的,我不明白使用这些类有什么区别。每门课的优点和局限性是什么。我读了很多教程,但仍然不能决定我应该做什么


为了让事情更清楚,我买了AudioModule、AudioEmitterComponent和AudioListenerComponent。(我们的游戏是基于组件的。当你创建一个对象作为一些声音的来源(怪物或其他东西)时,我添加了发射器组件。然后我遇到了问题。我不知道如何做到最好。首先,我希望音频模块得到列表,听众也得到列表(还有wave和Soundbank的列表)现在我遇到的问题不是编码本身(目前),而是关于什么、在哪里、何时、为什么的概念。任何想法都是有价值的:)

声音效果
视为声音文件。您可以使用内容管理器加载这些文件

SoundEffectInstance
作为播放声音文件的程序

SoundEffect
有一个
Play
方法。这只是为了方便。它在内部的作用是创建一个
SoundEffectInstance
,播放它,然后在播放结束后进行清理。(被称为“开火然后忘记”。)

使用
SoundEffectInstance
(使用
SoundEffect.CreateInstance
创建)时,您需要自己管理所有这些内容-优点是您可以在播放声音时操纵声音的属性(音量等)。您还可以循环声音,中途停止或暂停,等等

当您完成
SoundEffectInstance
时,不要忘记
Dispose()

使用
SoundEffectInstance
(完全可选)可以做的另一件事是对其应用3D效果。这为您提供了一种在3D空间中“放置”声音的简单方法。您可以使用SoundEffectInstance.Apply3D应用3D效果(为其提供一个侦听器和一个发射器,以提供有关相机和声源的信息)。关于这方面的确切细节,最好留待MSDN上的“”文章