XNA 音效大幅降低系统速度

标签 xna soundeffect

我刚刚在 上完成了非常有用的初学者教程。 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次,并且很难快速按下按钮,因此现在只播放一次。

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

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

干杯
瑞安

最佳答案

问题是:假设您以 60 fps 运行。如果您按住该键 1 秒钟,您的声音效果将发出 60 次(注意您只检查 .IsKeyDown,只检查一次您需要检查它是否刚刚按下,而不是它是否按下)

所以你有几个解决方案:

1) 你只在第一次按下时发射

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

虽然您可能会尝试做 #1,但最好的解决方案是 #2,因为它向您介绍了如何在全局范围内正确限制声音发射,此外,当您知道(改变音高,随机选择其他声音等)。

关于XNA 音效大幅降低系统速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8609719/

相关文章:

c# - C#XNA SoundEffect.FromStream

xna - 良好的 AI 引用所需的建议

c# - 获取 XNA 支持的屏幕分辨率?

audio - 声音乘法的效果

audio - XNA SoundEffects无法播放

c# - 在影响模型的屏幕上书写文本

c# - 单个对象的 Monogame XNA 变换矩阵?

c# - 制作基本的奔跑 Sprite 效果

android - 如何在Android版MonoGame上播放声音效果?