我在C#/ XNA中構建遊戲,它是一款頂級賽車遊戲,當我的汽車碰到牆壁時,我想播放音效。停止SoundEffect循環使用
問題是我的聲音一直在循環播放,所以當我撞到牆上時,歌曲會立即開始播放,但我希望它播放,播放完畢後可以再次播放。
這裏是一個需要碰撞的照顧代碼:
if (map[x][y] == 0)
{
car.speed = 0;
crash.Play(); }
請問我,如果我'有關的東西並不清楚。
在此先感謝!
我在C#/ XNA中構建遊戲,它是一款頂級賽車遊戲,當我的汽車碰到牆壁時,我想播放音效。停止SoundEffect循環使用
問題是我的聲音一直在循環播放,所以當我撞到牆上時,歌曲會立即開始播放,但我希望它播放,播放完畢後可以再次播放。
這裏是一個需要碰撞的照顧代碼:
if (map[x][y] == 0)
{
car.speed = 0;
crash.Play(); }
請問我,如果我'有關的東西並不清楚。
在此先感謝!
您可能需要查看SoundEffectInstance
類。以下是關於如何正確使用它的example。
您可以檢查音效狀態,以查看其是否正在播放
編輯:我添加了一個更完整的代碼,因爲我覺得它需要。這與我提供的鏈接大致相同。 (注:此代碼是未經測試)
//In your content load
SoundEffect crash;
crash = Content.Load<SoundEffect>("PathToYourSoundEffect");
SoundEffectInstance sei = crash.CreateInstance();
//In your update code
if(sei.State == SoundState.Stopped || sei.State == SoundState.Paused)
{
sei.Play();
}
呼叫SoundEffect.CreateInstance()獲得SoundEffectInstance。然後IsLooped屬性設置爲false打電話之前Play:
crashSoundEffectInstance.IsLooped = false;
我想嘗試一下,不使用soundeffectinstance類,我只想知道soundeffect何時結束播放,所以當它結束時,我可以再次開啓它。 – Max
下面是完整的回答你的問題:http://msdn.microsoft.com/en-us/library/dd940203.aspx
SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;
然而,在默認情況下,SoundEffect中不應環...
'crash'是什麼類型 –
Crash是SoundEffect – Max