【问题标题】:Monogame - How to properly cap FPS in Monogame?Monogame - 如何在 Monogame 中正确限制 FPS?
【发布时间】:2015-07-25 00:44:57
【问题描述】:

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

我使用了 XNA 用于 Windows Phone 7 的相同 sn-p 代码:

//FrameRate is 30fps by default for WindowsPhone.
TargetElapsedTime = TimeSpan.FromTicks(333333);

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

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

【问题讨论】:

    标签: xna windows-phone-8.1 monogame


    【解决方案1】:

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

    // 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
    }    
    

    【讨论】:

    • 我想我现在回复你已经很晚了(很抱歉,我创建了帐户,但此后没有登录:/)。尽管我现在会通过线程来做到这一点,但您的方法似乎也很合理(并且绝对比处理线程更安全)。我会将这个古老的问题标记为已回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多