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

Java 在libGDX中恢复屏幕,而不是创建新实例,java,libgdx,Java,Libgdx,在libGDX中,点击屏幕B中的后退按钮后,是否可以恢复屏幕A,而不创建屏幕A的新实例?这样,“我的玩家”角色就可以从最后一个位置继续行走,而不是从起点行走。 当用户从屏幕A导航到屏幕B时,屏幕A暂停,但游戏不暂停 我通常在ScreenB类中使用以下代码在屏幕之间切换: btnLabsEnter.addListener(new InputListener(){ @Override public boolean touchD

在libGDX中,点击屏幕B中的后退按钮后,是否可以恢复屏幕A,而不创建屏幕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。

没有“正确”的方法来实现这一点。例如,如果您的屏幕不需要大量资源,那么您可以在游戏类中预先创建它们,并在它们之间切换,而无需创建新实例

这就是我所做的,两年前这款游戏在低端手机上运行得非常好。我不会每次都这样做,但对于资源灯游戏来说,它工作得非常好

/** 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);
}

有一个问题。如何防止游戏类在其切换到的屏幕上调用show()方法?目前,如果我执行上述操作并使用setScreen(),虽然它不会创建屏幕的新实例,但它仍会调用show,这实际上会创建所有新内容。这只是创建一个自制版本的setScreen/检查show()中的状态的例子吗?还是我错过了一个聪明的方法?