2011-03-31 111 views
5

像问题一样,我不明白使用这些类的区别。每班有什么优点和局限性?我读了很多教程,仍然无法确定我该怎么做。SoundEffect和SoundEffectInstance类之间的区别

为了使事情更清楚,我得到了AudioModule,AudioEmitterComponent和AudioListenerComponent。 (我们的游戏的eninge是基于组件的,当你创建和对象是某些声音的源头(怪物或某物)时,我添加了发射器组件,然后我遇到了问题,我无法弄清楚如何做到最好。首先,我希望音频模块获得列表,对于听众来说也是如此(对波形和音库也是一样)。现在我遇到了问题,而不是编码本身(目前),但是概念是什么,何处,何时,为什么。想法是有价值的:)

回答

10

认为SoundEffect作为声音文件。您可以使用内容管理器加载这些内容

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

SoundEffect有一个Play方法。这只是为了方便。它在内部做的是创建一个SoundEffectInstance,播放它,然后在完成时清理。 (被称为“火和忘记”。)

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

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

您可以使用SoundEffectInstance(完全是可选)可以做的另一件事是对其应用3D效果。这为您提供了一种将声音“放置”到3D空间的简单方法。你应用使用SoundEffectInstance.Apply3D(给它一个听众和发射器,提供关于相机和声源的信息)的3D效果。有关详细信息,最好留给MSDN上的“Applying a 3D Positional Effect to a Sound”文章。

相关问题