我正在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