游戏的基本思想是收集,以进入下一个在一个房间里的所有项目。我知道的不是很原始的......当所有物品都被收集后,屏幕上将显示“等级完成”,然后几秒钟后,下一个等级将被重新加载。我遇到的问题是,当我登上最后一个项目时,检查“是否收集了所有物品?”规则满足游戏突然冻结,实际开始动摇。玩家精灵就像物品一样冻结在原地,游戏不能再与其互动。我只能假设游戏被困在render()方法中,并且没有转义,或者再次满足相同的条件。LibGDX - 结束一个级别和打破的渲染()
有没有人有任何想法如何摆脱主要渲染()方法正确地遍历到新的屏幕?
在我的主要渲染()方法,我有哪些检查游戏状态的另一种方法,即一个电话,都对项目的在房间里收集...
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);
}
嗨。感谢你的回答。我确实有你在我的另一个屏幕的渲染方法中提出的Gdx.gl.glclear的东西,所以我想它一定是放弃了。问题是,我不完全明白这一点。 GameScreen和LevelComplete屏幕一样实现屏幕。我认为这是好的,但你如何正确地处理屏幕。我明白hide()方法可能被调用,但我不确定如何处理它。我真的很努力地找到任何不太复杂或依赖于Scene2D等的例子。它必须能够切换屏幕? –
对'setScreen'的调用将导致'Game'类在当前迭代之后切换屏幕。它会导致调用hide()和调用show()。当您执行setScreen时,Dispose必须由您自己调用。当你使用舞台时,你应该记得切换InputProcessor。没有更多的代码,这是一个纯粹的猜谜游戏,你可能做错了或忘了做... – noone