1

在 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。

4

1 回答 1

0

没有“正确”的方法可以做到这一点。例如,如果您的屏幕不需要大量资源,那么您可以在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);
}
于 2013-04-22T07:04:30.717 回答