0

游戏的基本思想是收集一个房间里的所有物品,以便进行下一个。我知道不是很原始...当所有物品都收集完毕后,将显示一个屏幕显示“关卡完成”,然后几秒钟后将重新加载下一个关卡。我遇到的问题是,当我降落在最后一件物品上时,检查“是否已收集所有物品?” 规则满足游戏突然卡住,井居然开始晃动。玩家精灵和物品一样被冻结在原地,无法再与游戏进行交互。我只能假设游戏被困在 render() 方法中并且没有逃逸,或者再次满足相同的条件。

有没有人对如何正确地跳出主 render() 方法以遍历新屏幕有任何想法?

在我的主要渲染()方法中,我调用了另一个检查游戏状态的方法,即所有物品都收集在房间里......

render() {

    ... code ...
    checkGameState()
}

然后 checkGameState() 如下所示:

public void checkGameState() 
{

    //If the player has collected all of the items on a level then do something
    //if(stats.getItemsCollected() == stats.getTotalItems()) {
        //reset some stuff
        stats.resetItems();
        stats.incLevel();

        //show the intermediate screen or menu screen

        //load the next level
        showLevelCompleteScreen();


        //

    }
}

ShowLevelCompleteScreen() 方法只是尝试如下切换屏幕:

public void showLevelComplete()
{
    game.setScreen(SuperBlockMan.LevelComplete);
}
4

1 回答 1

1

首先,我建议您不要重置屏幕,而是dispose()正确重置屏幕,然后在完成一个级别后创建一个全新的屏幕。这样可以避免因错误重置而导致的错误。

将屏幕切换到 LevelComplete 后,渲染不会停止,但 libGDX 会开始调用您的 LevelComplete 屏幕的渲染。

至于你的角色,物品等的冻结,我猜你没有调用Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);LevelComplete Screen的render方法,这就是为什么你仍然可以看到你的游戏中的一切,但不能再互动了。

于 2013-10-24T05:47:57.420 回答