XNA声音效果大大减慢了系统速度

时间:2011-12-22 21:06:28

标签: xna soundeffect

我刚刚在 http://www.riemers.net/eng/Tutorials/XNA/Csharp/series2d.php处完成了非常有用的begginers教程,对结果非常满意。

然而,我注意到通过使用3个.wav文件进行声音效果,游戏速度大幅减慢,我已经调整了这段代码:

if (keybState.IsKeyDown(Keys.Enter) || keybState.IsKeyDown(Keys.Space))
        {
            if (!rocketFlying) launch.Play();
            rocketFlying = true;    
            ...
         }

按下按钮时播放启动声音效果,因为更新方法每秒检查60次,并且很难快速按下按钮,所以它现在只播放一次。

但是,它仍然会大幅减慢游戏速度,这显然不太理想。

显然,我并不想对这个特定的游戏做任何事情,但我想知道如何为未来的项目解决这个问题,只是因为它有点刺激。

干杯 莱恩

1 个答案:

答案 0 :(得分:0)

问题在于:说你的运行速度为60 fps。如果按住键1秒钟,你的声音效果将会激发60次(注意你只是检查.IsKeyDown,只检查一下你是否需要检查它是否只是按下了,而不是它是否已经按下)

所以你有几个解决方案:

1)您只在第一次按下时发出

2)你进入你的xact项目并将你的提示或类别的最大实例限制在合理的范围内(3是一个很好的数字,使用替换最旧的)

虽然您可能想要做#1,最好的解决方案是#2 ,因为它向您介绍了如何在全球范围内正确限制声音排放,此外还有很多很酷的相关xact东西你可以知道(改变音高,随机选择其他声音等)。