查看帧缓存中的文件

时间:2012-02-20 10:39:04

标签: objective-c cocos2d-iphone

我在游戏中有很多plist,每个级别。 我正在使用它来卸载前一个frameCache,

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

但过了一段时间,似乎游戏变得有点慢了。

  1. 我也在实时加载,像这样的图像:
  2. sprite = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"candy%i.png",1]];
    

    其中candy1是缓存中spriteesheet中的sprite并且正在加载 在实时 - 这意味着每秒很多次。 会不好?它是否加载内存以便每秒多次从spriteSheet中获取精灵?我必须预先定义它吗?

    非常感谢。

1 个答案:

答案 0 :(得分:0)

您不想加载/卸载单个精灵帧。精灵框架引用纹理。通常这将是许多不同的精灵帧使用的纹理图集。精灵帧本身可能是16字节的数据。纹理可能高达16兆字节。

因此,除非你删除整个纹理图集和所有相关的精灵帧,否则所有你将获得的性能降低,因为你经常解除分配和加载精灵帧。如果你每秒多次这样做,你就会浪费很多时间来加载/卸载精灵帧。

经验法则:预先加载整个场景,将所有内容保存在内存中,直到场景结束。只有当整个场景不能同时适应内存时,才考虑卸载/重新加载对象和数据。