声音更新方法的效果保持循环

时间:2012-11-21 16:10:07

标签: c# xna

我正在Xna中构建一个游戏,并且我的声音效果会保持循环,这很明显,因为声音是通过更新方法播放的。

这些声音实际上不是一次播放1个,但就像我的汽车碰撞到一个名为tile 1的瓷砖一样,它会一次播放1000次以上。

如何防止声音一次播放1000次以上,让它一次播放1次?

这是我用来播放音效的代码:

if (map[x][y] == 1)
        {
            car.speed = 0;
            crash.Play();
        }

crash是soundEffect的名称。

提前致谢!

2 个答案:

答案 0 :(得分:2)

我不得不建议你阅读一篇关于Xact的好教程

您会认为这种方法比您尝试使用的方法更难,但在未来中它对您来说会更灵活:)

Xact on MSDN

或者您可以使用声音中的pause()方法。

答案 1 :(得分:0)

如何实现这一目标的快速示例:

bool soundPlayed = false;   //This would be in a INIT method somewhere

if (map[x][y] == 1)
{
    if (!soundPlayed)
    {
        car.speed = 0;
        crash.Play();
        soundPlayed = true;
    }
}
else
{
    soundPlayed = false;    //Reset once condition is false
}