【问题标题】:How can we slow down render method speed in libGdx? [duplicate]我们如何才能减慢 libGdx 中的渲染方法速度? [复制]
【发布时间】:2020-10-05 08:52:35
【问题描述】:

我是编程领域的新手,正在尝试使用 libGDX 编写小型游戏。我想知道如果我们可以减慢渲染方法的速度?例如。 render 方法在一分钟内运行大约 60 次。我们可以像这样的渲染方法编写代码在一分钟内运行大约 30 次或一分钟内运行 10 次或一分钟内运行 100 次等吗?谢谢!

【问题讨论】:

  • 为什么要降低帧速率?这是否与我对您的其他问题的回答有关,即您的导弹在不同的帧速率下具有不同的速度?如果是这样,并且您正试图通过强制游戏以较慢的帧速率运行来使速度保持恒定,那么这可能不是一个好主意,因为较慢的旧设备仍然可能比您设置的运行速度慢。您希望您的游戏独立于帧速率运行,这样如果出现任何意外问题,您的游戏就会处理它,这就是我在其他问题中提到的使用增量时间的地方。

标签: java android libgdx render


【解决方案1】:

render 方法在一分钟内运行大约 60 次

秒 60 次 很正常,但每 分钟 60 次 绝对正常。


假设您创建了一个桌面应用程序,您可以在 DesktopLauncher 中指定帧速率。

为此,您只需在启动配置中对字段 foregroundFPS 进行分段即可。

比如可以这样(我修改了here的代码):

package com.me.mygdxgame;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
public class Main {
    public static void main(String[] args) {
        LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
        cfg.foregroundFPS=10;
        new LwjglApplication(new MyGdxGame(), cfg);
    }
}

但是,这是一个整数,指定每秒调用 render() 的频率。

如果您希望它的调用速度低于每秒一次,则需要在 render() 方法中使用类似 Thread.sleep(); 的内容。

但是,您的程序在此时间结束之前不会响应。

在调试/测试某些东西时这在开发中可能没问题,但在生产中却是一个大问题

如果您希望您的游戏快速反应并运行一些代码,例如每分钟一次,您可以考虑使用后台线程(池)或计时器(或类似的)。

如果你想知道多线程如何与 LibGdX 一起工作,你可以看看this

您基本上可以正常使用线程(HTML 除外),但您应该使用 Gdx.app.postRunnable(); 来更改 UI(如 JavaFX 中的 Platform.runLater();)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2019-04-04
    • 2013-12-08
    • 1970-01-01
    相关资源
    最近更新 更多