libGDX:如何将屏幕正确加载到内存中?

时间:2015-11-02 23:24:33

标签: java performance memory libgdx

我的游戏开始时有一个启动/加载屏幕。首先,我使用AssetManager加载我的资产,之后,我想将Screens加载到内存中。目前,我是这样做的:

menuState = new MenuState(game);
playState = new PlayState(game);
gameOverState = new GameOverState(game);

现在我想用fadeIn和fadeOut Animation显示MenuState。这工作正常,但此动画的进度基于当前增量。对于接下来的几次渲染调用,我得到了如此高的delta,根本没有可见的动画。

我不明白,为什么有一个高delta不仅适用于下一个渲染调用(加载所有这些状态需要时间,但是当它们完成加载时无需再做任何事情)但也适用于下一个几次渲染电话。

如何加载这些加载后delta低的屏幕?

1 个答案:

答案 0 :(得分:2)

在考虑delta的动画中,你可以引入一个"最大值"三角洲。这将有所帮助,因此您的动画不会被跳过,但最初可能仍然显得有些迟钝。

LibGDX

Stage.java源代码中使用了类似的方法
public void act () {
    act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
}

public void act (float delta) {
    //does stuff
}

Math.min将采用deltaTime1/30f的较小值,以确保即使每帧实际上花费很长时间,它也会以较小的增量进行更新。