2013-06-27 152 views
0

我有一款遊戲,當我進入GameScreen時,遊戲速度非常緩慢。在GameScreen上,如果我什麼也不做,並且觀看,FPS下降到10以下,並在大約30秒內停留在那裏。我一直在尋找我的代碼,我認爲我已經縮小到一個部分,但它對我來說沒有意義,爲什麼它不工作,或者如何解決它。libGDX遊戲行事緩慢

start_button = new TextButton("Start", Resources.getSkin()); 
    start_button.setWidth(75); 
    start_button.setHeight(25); 
    start_button.setX(FRUSTUM_WIDTH/10); 
    start_button.setY(FRUSTUM_HEIGHT/4); 

    ... 

    stage.addActor(start_button); 
    stage.addActor(pause_button); 
    stage.addActor(reset_button); 
    stage.addActor(platform_button); 

在我的GameScreen的render方法中,我調用了一個方法,並在該方法中創建了四個textbuttons。當我將按鈕添加到舞臺上時,似乎是問題的代碼段是最後四行。如果我評論這些線條,遊戲運行良好,FPS總是60。如果我只評論三條線,並且在舞臺上增加一個按鈕,FPS仍然會降至10以下,但這需要更長的時間最終回升到60。

爲什麼這些線條放慢了比賽速度?

+0

addActor做什麼 – neo

+1

你在渲染方法中做了所有這些嗎?這一切似乎只是在創建屏幕時才需要調用_once_的代碼。 – DannyMo

回答

4

如果你在Gamescreen的渲染方法中做了所有這些,那麼這就是你的錯誤。

因爲每次你創建新的按鈕,並將其添加到舞臺上,肯定是不好的。 每次你添加一些東西來增加它的列表的增加,並且如果取決於你的渲染方法被調用的頻率,列表會增加,所以是處理該列表的時間。

不要忘了垃圾收集器,因爲大量的對象正在製作,當垃圾收集器將被稱爲您的fps將明顯減少。