我正在用C#/ XNA制作一款游戏,这是一款顶级赛车游戏,当我的车碰到一堵墙时,我想发挥声音效果。
问题是我的声音一直在循环,所以当我撞墙时,歌曲会立即开始播放,但是我希望它能够播放,当它完成播放时,它可以再次播放。
以下是处理冲突的代码:
if (map[x][y] == 0)
{
car.speed = 0;
crash.Play(); }
如果我不清楚某事,请问我。
提前致谢!
答案 0 :(得分:4)
以下是您问题的完整答案:http://msdn.microsoft.com/en-us/library/dd940203.aspx
SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;
但是,默认情况下,SoundEffect不应该循环...
答案 1 :(得分:2)
致电SoundEffect.CreateInstance()获取SoundEffectInstance。然后在致电IsLooped之前将Play属性设置为false:
crashSoundEffectInstance.IsLooped = false;
答案 2 :(得分:1)
您可能需要查看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();
}