Monogame - 如何在 Monogame 中正确设置 FPS 上限?

Monogame - How to properly cap FPS in Monogame?

如果我的游戏是为 Windows Phone 构建的,我想有条件地将游戏的 FPS 限制在 30fps,因为我不需要它是 运行 60fps 并且我听太多人说最好把它限制在移动设备上,因为电池会耗尽。

我使用了 XNA 用于 Windows Phone 7:

的相同代码片段
//FrameRate is 30fps by default for WindowsPhone.
TargetElapsedTime = TimeSpan.FromTicks(333333);

但是......当它在限制 FPS 的工作时,它也会影响其他一切,导致卡顿和声音问题。因此,我想我做错了什么。

任何对我有帮助的东西都会很棒,因为我无法在互联网上找到任何关于这个问题的信息(大多数人想要的恰恰相反 :D )

要解决您的声音问题,请查看多线程和 运行 您的声音系统在一个单独的、无上限的线程上。对于游戏代码,特别是更新资产的代码,您的方法应该可行,但我个人的做法有所不同。

// in your game1 class variable definitions
private const float timeToNextUpdate = 1.0f / 30.0f;
private float timeSinceLastUpdate;

//in your game1 update method
public override void Update(GameTime gameTime)
{
    timeSinceLastUpdate += (float)gameTime.ElapsedGameTime.TotalSeconds;

    if (timeSinceLastUpdate >= timeToNextUpdate)
    {
        //update game
        timeSinceLastUpdate = 0;
    }
    //systems you don't want to limit would be updated here
}