2015-07-18 70 views
0

短版:請聯繫我的libgdx遊戲的orginized代碼Box2D的或只是告訴我什麼成員去哪個班LibGDX,我應該如何組織屏幕和舞臺內的代碼?

龍版本:我有裏面GameStage對象GameScreen。然而,當我開發我的遊戲時,我發現GameStage有很多代碼,而GameScreen幾乎是空的。 最初我把相機和視口放在GameScreen,但就是這樣。

private Jumper    game; 
private GameStage   stage; 
private OrthographicCamera camera; 
private FitViewport   viewport; 

這裏有成員是我GameStage內:

public World    world; 
private Ground    ground; 
private Player    player; 
private float    accumulator = 0f; 
private Vector3    touch = new Vector3(); 
private Rectangle   rightSide; 
private Rectangle   leftSide; 
private Queue<Platform>  platforms; 
private int     score; 
private OrthographicCamera camera; 
private Box2DDebugRenderer debugRenderer; 
private FitViewport   viewport; 

該ATM並不是說對我不好,但是我只能是在原型構建,有這麼多力學我敢肯定,它會像我以前的遊戲(50+成員)一樣結束,並且有太多的代碼,我每次都會迷失在其中。

遊戲擁有這麼多是否正常?碼?或者有沒有一種方法來優化?

PS:這是我的階級結構:http://i.stack.imgur.com/8uYgA.png

回答

0

我在製作的Box2D遊戲以及過程和組織是我的一個大問題。在一場比賽中,你需要管理很多東西。相機,遊戲邏輯,移動實體等。爲了讓這一切合作,我開始使用我稱之爲處理程序的東西。這些處理程序將處理遊戲的特定方面。這使我可以將相機代碼遠離Box2D代碼。

對於這個項目我的工作,現在,我有我的「宇宙」類裏面有五名處理程序:

public WorldHandler world_handler; 
public MapCameraHandler map_camera_handler; 
public EntityHandler entity_handler; 
public LevelHandler level_handler; 
public WaveHandler wave_handler; 

當我初始化他們每個人,我通過參考這個宇宙級的他們構造函數以便處理程序可以相互通信。然後,在我的更新步驟中,我分別調用每個處理程序的更新。

public void update(float delta) 
{ 
    world_handler.update(delta); 
    entity_handler.update(delta); 
    map_camera_handler.setCameraBounds(); 
    wave_handler.update(); 
} 

我對繪圖方法也是這樣。

public void draw() 
{ 
    map_camera_handler.map_renderer.setView(map_camera_handler); 
    map_camera_handler.map_renderer.render();  
    entity_handler.draw(); 
} 
+0

我會試試你的想法,謝謝 –