在libGDX中恢复屏幕,而不是创建新实例



是否可以在libGDX中恢复屏幕A后,在屏幕B中点击后退按钮,而不创建屏幕A的新实例?这样我的玩家角色就可以从最后一个位置开始行走,而不是从起点开始行走。当用户从屏幕A导航到屏幕B时,屏幕A暂停,但游戏没有。

我通常在ScreenB类中使用以下代码来切换屏幕:

btnLabsEnter.addListener(new InputListener(){
                 @Override
                    public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
                      getGame().setScreen(new ScreenA(getGame()));
                          return true;
                 }
             });

然而,上面的代码是用来创建屏幕A的新实例,而不是显示先前隐藏的屏幕A。

没有"正确"的方法。例如,如果你的屏幕不需要大量的资源,那么你可以在你的Game类中预先创建它们,然后在它们之间切换而无需创建新的实例。

我在《非常愤怒的机器人》中就是这么做的,两年前这款游戏在低端手机上运行得非常好。我不会每次都这么做,但对于一款资源轻的游戏来说,这非常有效。

/** Creates all the screens that the game will need, then switches to the main menu. */
@Override
public void create () {
    Assets.load();
    mainMenuScreen = new MainMenuScreen(this);
    playingScreen = new WorldPresenter(this);
    scoresScreen = new ScoresScreen(this);
    setScreen(mainMenuScreen);
}

相关内容

  • 没有找到相关文章

最新更新