【问题标题】:How to switch from Gameover screen to Menu screen in Libgdx?如何在 Libgdx 中从 Gameover 屏幕切换到 Menu 屏幕?
【发布时间】:2018-08-23 07:15:19
【问题描述】:

我正在实现一个 2d 平台游戏。当玩家跌倒时,它会显示游戏结束屏幕。但是在单击屏幕时,它应该指向菜单屏幕,但它没有发生。相反,屏幕中的 Game over 文本会展开。 这是我的游戏屏幕代码。在handleInput中,我编写了将游戏结束屏幕状态更改为菜单屏幕的代码

【问题讨论】:

    标签: android menu libgdx screen box2d


    【解决方案1】:

    如果您不共享太多代码会更好。您应该在发布问题时删除不相关的代码。其中大部分是无关紧要的。您应该分享 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()) 来更改屏幕。您可能观看了第一个教程并学习了扩展自定义类(如 MenuState),就像我刚开始学习 LibGDX 时所做的那样,然后我看到大部分教程和代码共享使用 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));
          }
       }
    }
    

    这是您的游戏和屏幕的基本结构。查看LibGDXGame 类和Screen 接口,看看它们是如何工作的。

    【讨论】:

    • 如何使用 setScreen 方法更改屏幕?如果我想更改 GamestateManager 的状态,我将如何更改为 Menu Screen?我有一个用于 Menu、Game over screen 和 Play 的类屏幕。如果我现在扩展 ScrenAdapter,我必须删除 MenuState、Play、GameOver 类。我不想这样做。
    • 您可以查看 LibGDX 教程以了解它的使用方式。我基本上解释了它。您使用一个字段来查看游戏屏幕的状态并使用 Game 类的 setScreen()。您的主类应该扩展 Game 并且您的屏幕应该扩展 ScreenAdapter 类以能够由 Game 类设置。游戏画面游戏画面=新游戏画面(游戏); game.setScreen(new MenuScreen(game));例如
    猜你喜欢
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多