如何在Libgdx中从Gameover屏幕切换到Menu屏幕?

时间:2018-08-23 07:15:20

标签: android menu libgdx screen box2d

我正在实施2D平台游戏。当玩家摔倒时,它将在屏幕上方显示游戏。但是在单击屏幕时,它应该直接转到菜单屏幕,但是没有发生。而是,屏幕上的文字游戏会扩展。 这是我的游戏屏幕代码。在handleInput中,我编写了将屏幕上的游戏状态更改为菜单屏幕的代码

1 个答案:

答案 0 :(得分:0)

如果您不共享太多代码,那就更好了。发布问题时应删除不相关的代码。大多数问题都是不相关的。您应该分享GameState类的工作方式,导航方式。

您是否要使用此代码导航?

 if (MyInput.isPressed()) {
            if (MyInput.x < Gdx.graphics.getWidth() / 2) {

                gsm.getState(GameStateManager.MENU, level);
            }
           else

               gsm.getState(GameStateManager.MENU, level);
            }
        }

如果是这样,则可能是因为您尝试获取状态而不是对其进行设置。

为什么不扩展ScreenAdapter并使用setScreen(new MenuScreen())来更改屏幕。您可能看了第一批教程,并像初次学习LibGDX时一样学习了扩展自定义类(如MenuState)的经历,然后我看到了大多数教程和代码共享,它们使用Game和ScreenAdapter类或Screen接口在屏幕之间导航。

用于游戏的多屏幕游戏的基本设置

设置ENUM或int状态,例如STATE = RUNNING,PAUSED,LEVEL_UP,GAME_OVER

和setScreen()取决于游戏屏幕的状态。

public MyGame extends Game {

  public void create() {
      setScreen(new GameScreen(this));
  }

}

public GameScreen extends ScreenAdapter {
    // You define a state to watch different states of your game
    private int state = RUNNING;
    private MyGame game;
  public GameScreen(MyGame myGame) {
    game = myGame;
  }


   void handleInput() {
      if(state==FINISHED) {
       game.setScreen(new MenuScreen(game));
      }
   }
}

这是游戏和屏幕的基本结构。查看Game的{​​{1}}类和Screen接口,以了解它们的工作原理。