我刚刚在 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次,并且很难快速按下按钮,所以它现在只播放一次。
但是,它仍然会大幅减慢游戏速度,这显然不太理想。
显然,我并不想对这个特定的游戏做任何事情,但我想知道如何为未来的项目解决这个问题,只是因为它有点刺激。
干杯 莱恩
答案 0 :(得分:0)
问题在于:说你的运行速度为60 fps。如果按住键1秒钟,你的声音效果将会激发60次(注意你只是检查.IsKeyDown,只检查一下你是否需要检查它是否只是按下了,而不是它是否已经按下)
所以你有几个解决方案:
1)您只在第一次按下时发出
2)你进入你的xact项目并将你的提示或类别的最大实例限制在合理的范围内(3是一个很好的数字,使用替换最旧的)
虽然您可能想要做#1,最好的解决方案是#2 ,因为它向您介绍了如何在全球范围内正确限制声音排放,此外还有很多很酷的相关xact东西你可以知道(改变音高,随机选择其他声音等)。