2011-03-31 123 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」文章。