我正在LibGdx的游戏中工作,我会切换屏幕很多,所以我想我会做我自己的小屏幕管理器。但是要设置屏幕,我需要参考LibGdx Game
。我对现在的经理看起来并不满意,我必须通过某种方式实现这一点,而无需发送两次Game对象。Libgdx ScreenManager
我的代码:
public static void setScreen(Screen screen, Game game){
if(currentScreen != null){
currentScreen.dispose();
System.out.println("Screen disposed");
}
currentScreen = screen;
game.setScreen(currentScreen);
}
我们从另一个屏幕设置屏幕(例如从menuScreen设置gameScreen)身份证需要一个游戏对象发送到屏幕的构造函数,像这样:
ScreenManager.setScreen(new GameScreen(game), game);
在我的完美主义者希望能够以这样称呼它:
ScreenManager.setScreen(new GameScreen(), game
或
ScreenManager.setScreen(new GameScreen(game)
任何人都可以想办法做到这一点?或者我只是沉迷于我可能会做的事情?
“SceneManager”必须是单身人士吗?一种可能的解决方案可能是允许实例化它,并在构造函数中传入你的'Game'对象,尽管还有一些感觉...... – lealand 2015-04-03 16:35:48
还有一点评论,因为我一直处于类似的情况。看起来你正在开发一系列依赖关系(我认为)游戏取决于场景管理器,场景管理器取决于游戏。试着让它只是一种方式,例如游戏会告诉经理进行更新和渲染,并且经理会告诉当前场景进行更新和渲染。 – lealand 2015-04-03 16:45:27
感谢您的意见:)这实际上是ScreenManager中的唯一方法。我不做任何渲染或类似的东西。我只是设置屏幕并处理旧的。我曾想过创建自己的抽象Screen类,而不是在LibGdx中实现这个类。也许我会这样做,我不必参考'游戏' – WEDEBE 2015-04-03 16:56:21