【发布时间】:2018-08-23 07:15:19
【问题描述】:
我正在实现一个 2d 平台游戏。当玩家跌倒时,它会显示游戏结束屏幕。但是在单击屏幕时,它应该指向菜单屏幕,但它没有发生。相反,屏幕中的 Game over 文本会展开。 这是我的游戏屏幕代码。在handleInput中,我编写了将游戏结束屏幕状态更改为菜单屏幕的代码
【问题讨论】:
标签: android menu libgdx screen box2d
我正在实现一个 2d 平台游戏。当玩家跌倒时,它会显示游戏结束屏幕。但是在单击屏幕时,它应该指向菜单屏幕,但它没有发生。相反,屏幕中的 Game over 文本会展开。 这是我的游戏屏幕代码。在handleInput中,我编写了将游戏结束屏幕状态更改为菜单屏幕的代码
【问题讨论】:
标签: android menu libgdx screen box2d
如果您不共享太多代码会更好。您应该在发布问题时删除不相关的代码。其中大部分是无关紧要的。您应该分享 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));
}
}
}
这是您的游戏和屏幕的基本结构。查看LibGDX 的Game 类和Screen 接口,看看它们是如何工作的。
【讨论】: