2012-02-20 54 views
0

我有很多plist,在我的遊戲 - 每個級別。 我使用這個卸載以前的frameCache,看看什麼文件在幀緩存

for(int i=1;i<stage;i++) 
    [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:[NSString stringWithFormat:@"candys%i.plist",i]]; 

但經過一段時間似乎比賽變得有點慢。

  1. 我也加載實時,像這樣的圖片:
sprite = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"candy%i.png",1]]; 

其中candy1是在高速緩存中的spritesheet精靈並實時被加載 時間 - 這意味着每秒多次。 它可能是壞的?是否加載內存從spriteSheet多次獲取精靈?我必須預先定義它嗎?

非常感謝。

+0

任何人都知道它是如何工作的? – Curnelious 2012-02-21 11:41:10

回答

0

你不想加載/卸載單個精靈幀。精靈框架引用一個紋理。通常這將是許多不同的精靈幀使用的紋理地圖集。精靈幀本身可能是16字節的數據。紋理可能高達16兆字節。

所以,除非你刪除整個紋理地圖集和所有關聯的精靈幀,否則所有你會得到的是性能下降,因爲你經常釋放和加載精靈幀。如果你每秒多次這樣做,你只是浪費大量時間來加載/卸載精靈幀。

經驗法則:預先加載整個場景,將所有內容保存在內存中,直到場景結束。只有當整個場景不能一次裝入內存時,才應考慮卸載/重新加載對象和數據。