是否可以在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);
}