Libgdx如何计算经过的时间

And*_*rew 5 java timer libgdx

我试图通过在render方法中将delta的值添加到我的浮点值来计算libgdx中的已用时间,浮点值是自播放状态开始以来我测量的时间.错误或问题,你想如何调用它,是通过我的计算,显示这样做的时间是实时的两倍.我试图除以2并且我非常接近实时,这意味着通过在每次渲染调用中添加delta我几秒钟内都无法获得实时.为什么会这样?

private float time=0;
public void render () {
    time +=Gdx.graphics.getDeltaTime();
}
Run Code Online (Sandbox Code Playgroud)

上面没有得到实时,我的问题是为什么?编辑:我正在使用屏幕,但无所谓我尝试了Gdx.graphics.getDeltaTime()和渲染方法的delta参数.

Tom*_*zny 14

您可以使用包装器TimeUtils.

获取当前时间:

long startTime = TimeUtils.millis();
Run Code Online (Sandbox Code Playgroud)

从startTime开始经过的时间:

long elapsedTime = TimeUtils.timeSinceMillis(startTime);
Run Code Online (Sandbox Code Playgroud)


Chr*_*ker 13

LibGDX仍然是Java的核心,只需使用标准方法来获取时间.在应用程序使用开始时

startTime = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

然后在渲染中你可以做到

System.out.println("Time elapsed in seconds = " + ((System.currentTimeMillis() - startTime) / 1000));
Run Code Online (Sandbox Code Playgroud)

确保将startTime声明为long.

至于为什么它没有使用你发布的方法,我不确定.

编辑:如果您的LibGDX项目未设置为以固定速率运行,则帧速率更改将导致Gdx.graphics.getDeltaTime()发生更改,因为更新的最后一帧返回增量时间.