XNA音效会大大降低系统速度



我刚刚在http://www.riemers.net/eng/Tutorials/XNA/Csharp/series2d.php上浏览了非常有用的初学者教程,并对结果相当满意。

然而,我注意到,通过使用3 .wav文件的声音效果,游戏是大大减慢,我已经适应了这一点代码:

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

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

然而,它仍然大大降低了游戏速度,这显然不是理想的。

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

干杯瑞安

问题来了:假设你以60帧/秒的速度运行。如果你按住键1秒,你的声音效果将触发60次(注意你只检查。iskeydown,只检查一次,你需要检查它是否刚刚被按下,而不是它是否被按下)

所以你有几个解决方案:

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

2)你进入你的确切项目,并限制你的线索的最大实例,或类别,合理的(3是一个很好的数字,使用替换最老的)

虽然你可能想要做#1,但最好的解决方案是#2,因为它向你介绍了如何正确地限制声音的全球传播,而且当你知道时,你可以做很多很酷的相关事情(改变音高,随机选择其他声音等)。

最新更新