我的游戏有3个状态,一个运行状态,一个暂停状态和一个游戏。所有3都由整数变量gameState
监控。按下暂停按钮时,状态应切换为1(暂停)。当我在运行状态下单击按钮时,一切正常,但如果我在gameOver状态下按下它,它只会忽略我的渲染方法中设置的条件。
if(gameState == 1)
sb.draw(pausemenu, cam.position.x - 315,cam.viewportHeight / 2 - 625 / 2, 625, 625);
table.setPosition(cam.position.x, 560);
if(gameState == 2){
sb.draw(gameover, cam.position.x - gameover.getWidth() / 2 - 85 , cam.viewportHeight / 2 - gameover.getHeight() / 2, 600, 500);
highScoreFont.draw(sb, "Highscore: " + highScore, cam.position.x - highScoreFont.getScaleX() / 2 - 250 , cam.viewportHeight - 425, 500, Align.center, true);
coinsFont.draw(sb, coins, cam.position.x - 201, cam.viewportHeight - 590, 500, Align.center, false);
sb.draw(coin, cam.position.x - layout.width / 2 - 51, cam.viewportHeight - 660, 90, 90);
restartButton.setPosition(cam.position.x - restartButton.getWidth() / 2, 525);
}
当我按下按钮时,播放声音,就像它应该的那样,应该处于暂停状态的按钮显示正常,但是没有绘制暂停菜单,而游戏不会消失。我错过了什么?这就像渲染方法停止检查gameState
在更改为2后是否已更改。
编辑: 更新方法:
if(gameState == 0 && tableVisible){
table.setVisible(false);
pauseButton.setVisible(true);
tableVisible = false;
restartVisible = false;
}
else if(gameState == 2 && !restartVisible) {
restartButton.setVisible(true);
restartVisible = true;
layout.setText(coinsFont, getCoins() + "");
}
else if(gameState == 1) {
if(restartVisible) {
restartButton.setVisible(false);
}
pauseButton.setVisible(false);
if(!tableVisible) {
table.setVisible(true);
tableVisible = true;
}
}
答案 0 :(得分:1)
已经有一种在libGDX框架中实现游戏状态的复杂方法。您应该扩展ApplicationListener
,而不是实施Game
。然后将游戏状态特定代码移动到实现Screen
的其他类中。要切换游戏状态,您应该在setScreen(Screen screen)
课程中致电Game
。