LibGDX渲染方法无法正确更新?

时间:2017-04-19 13:00:01

标签: java android libgdx

我的游戏有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;
    }
}

1 个答案:

答案 0 :(得分:1)

已经有一种在libGDX框架中实现游戏状态的复杂方法。您应该扩展ApplicationListener,而不是实施Game。然后将游戏状态特定代码移动到实现Screen的其他类中。要切换游戏状态,您应该在setScreen(Screen screen)课程中致电Game