Xna Monogame-如何在Monogame中正确地限制FPS?

Xna Monogame-如何在Monogame中正确地限制FPS?,xna,windows-phone-8.1,monogame,Xna,Windows Phone 8.1,Monogame,如果是为Windows Phone构建的,我想有条件地将游戏的FPS限制在30fps,因为我不需要它以60fps的速度运行,而且我从太多人那里听说,由于电池耗尽,最好在移动设备上限制它 我使用了XNA在Windows Phone 7上使用的相同代码片段: //FrameRate is 30fps by default for WindowsPhone. TargetElapsedTime = TimeSpan.FromTicks(333333); 但是。。。当它在为FPS设置上限时,它也在影响

如果是为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
}    

我想我现在回复你已经很晚了(很抱歉,我在年创建了一个帐户,但从年开始就没有登录:/)。尽管我现在会通过线程来实现这一点,但您的方法似乎也很合理(而且肯定比处理线程更安全)。我将这个古老的问题标记为已回答:)