2012-09-12 101 views
1

我最近升級到Cocos2d 2.0之前,我的遊戲工作正常,幀率穩定在60fps。升級到2.0,並改變一些代碼到新版本後,我已經認識到,玩遊戲大約3-4分鐘的幀率下降到50,比到40左右從cocos2d 1.x升級到2.x後幀速下降

我已經發現了一些錯誤,在我的代碼,像錯誤地釋放一些精靈一樣,但是這種FPS下降仍然存在。

我在場景中不斷創建精靈和刪除精靈。在遊戲的每一輪之後,我將移除屏幕元素並在新一輪中再次創建它們。幾乎所有的元素都是動畫的,我在將它們從場景中移除之前停止所有動作。

我發現,如果我刪除了現場,並再次啓動時,FPS率回到正常。

我做錯了什麼?我嘗試了幾種可能的解決方案,但我找不到路線原因。

有人可以幫忙嗎?

哦,我忘了提的是,代碼是在cocos2d的1.x的版本,做工精細。我從來沒有認出任何帶有相同代碼的FPS掉落。

回答

1

調試還是發佈?設備還是模擬器? --->僅在設備上的發佈版本中測量性能。

從描述,聽起來很像內存泄漏,你要麼得到越來越高的內存使用量或更多的節點不重新分配,這意味着他們可能會繼續運行。也許甚至畫畫。

還有就是爲什麼一個版本工作正常,但不是另一個,誰就是告訴這個bug只是在過渡過程中引入新的bug很多原因。我會從一個簡單的測試開始:當你刪除它們時,場景的所有節點是否運行dealloc方法?如果沒有,你有一個內存泄漏,也許是一個保留週期。將cocos2d的API從assign屬性簡單更改爲retain屬性就足以導致類似這樣的事情發生。

然後檢查儀器以確定您正在泄漏內存的位置。

+0

最後我解決了所有問題,正如你所說的,他的主要原因是內存泄漏。我試圖通過收集一些項目來獲得一個很好的效果,並且我用錯誤的方式解決了它。還有其他的問題可能會影響到比賽,當有人試圖連續幾輪比賽時。基本上得出的結論是,COCOS2D中的使用保持謹慎。謝謝您的幫助。 –