1

我正在用 C#/XNA 构建一个游戏,它是一个顶视图赛车游戏,我想在我的车撞到墙上时播放声音效果。

问题是我的声音一直在循环,所以当我撞到墙时,歌曲会立即开始播放,但我想让它播放,等它播放完后,可以再次播放。

这是处理碰撞的代码:

if (map[x][y] == 0) { car.speed = 0;

crash.Play(); }

请问我是否有不清楚的地方。

提前致谢!

4

3 回答 3

4

这是您问题的完整答案:http: //msdn.microsoft.com/en-us/library/dd940203.aspx

SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;

但是,默认情况下,SoundEffect 不应循环播放...

于 2012-11-16T17:37:57.417 回答
2

调用SoundEffect.CreateInstance()以获取SoundEffectInstance。然后在调用Play之前将IsLooped属性设置为 false :

crashSoundEffectInstance.IsLooped = false;
于 2012-11-16T16:34:35.840 回答
1

您可能想查看SoundEffectInstance课程。这是一个如何正确使用它的示例。

可以查看音效状态是否在播放

编辑:我添加了一个更完整的代码,因为我觉得它是必要的。这与我提供的链接中的示例大致相同。(注:此代码未经测试)

//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();
}
于 2012-11-16T16:11:52.037 回答