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

4

当我的游戏启动时,会出现一个闪屏/加载界面。首先,我使用AssetManager加载我的资源,然后,我想将我的Screens加载到内存中。目前,我的做法如下:

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

现在我想展示MenuState的淡入淡出动画。这个效果很好,但是动画的进程是基于当前delta计算的。在接下来的几次渲染调用中,我得到了如此高的delta,以至于根本看不到任何动画效果。
我不明白为什么不仅下一个渲染调用有高delta(加载所有这些状态需要时间,但当它们加载完成后就没有什么可做的了),而且接下来的几个渲染调用也是如此。
如何加载这些屏幕,使得它们加载后的delta值较低?
1个回答

3

在考虑到delta的情况下进行动画时,您可以引入“最大”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中较小的一个数值,以保证即使每帧的时间很长,也能够按照小的增量进行更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接