2013-04-30 95 views
0

我是Cocos2D和CocosBuilder的新手,我有幾個關於內存使用的問題。如果我在同一場景中爲所有CCSprite對象使用相同的紋理地圖集(spritesheet),它是否會爲每個sprite節省單獨紋理的內存使用量?準確地說,如果我使用一個4k * 4k紋理,遊戲是否只​​需要一個紋理地圖集(例如4k * 4k * 32位)的內存?Cocos2D/CocosBuilder紋理圖集內存使用

2)我可以針對不同的精靈使用不同的紋理模式來節省內存嗎?例如,對於背景圖像使用無alpha模式。換句話說,Cocos2D可以在同一場景中處理不同的紋理模式嗎?

3)我必須在一個場景中實現一個包含100個物體的遊戲,總共有3個場景。 現在,同一場景中的所有對象都使用相同的spritesheet。儘管如此,遊戲在場景之間切換幾次後仍然崩潰。每次我收到mem警告消息。 解決此問題的最佳方法是什麼? 我試圖轉儲所有這些緩存但仍然崩潰。

非常感謝!

回答

1

1)紋理只加載一次,不管有多少個對象從中抽取。一般來說,使用單一紋理不會節省(很多)內存,但是通過從儘可能少的紋理圖集繪製而不是單獨的圖像文件紋理來提高加載時間和渲染性能。

2)是的。例如,您可以在同一場景中使用RGB565(無alpha),RGB5551(bool alpha)或RGBA4444/RGBA8888紋理,沒有問題。

3)使用儀器。檢查泄漏。如果你不使用ARC,現在是時候切換。 PS:不要清除緩存,這只是浪費時間和內存,因爲最終紋理需要重新加載。如果你想釋放一個紋理,那麼你肯定在當時沒有被使用,並且不會在不久的將來使用,然後解開那些紋理,並且只是那些紋理。

+0

謝謝!這有很大幫助。我們的遊戲不會經常重複使用紋理。所以,我認爲我們可以清除一些不會很快用到的東西。 – BiGGA 2013-05-01 16:10:21