Cocos2D iPhone - 这会节省内存吗?

时间:2012-02-07 03:26:41

标签: iphone ios cocos2d-iphone

使用纹理在cocos上创建精灵时,可以分配内存。

类似的东西:

CCTexture2D *textureProxy = [[CCTexture2D alloc] initWithImage:image];
CCSprite *proxy1 = [CCSprite spriteWithTexture:textureProxy];

我的问题是:假设我想要几个精灵使用相同的纹理而且

CCSprite *proxy1 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy2 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy3 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy4 = [CCSprite spriteWithTexture:textureProxy];
CCSprite *proxy5 = [CCSprite spriteWithTexture:textureProxy];

我会使用5倍以上的内存吗? (换句话说,纹理会复制到每个代理,还是精灵只是一个引用原始纹理的“空盒子”?

如果后者是答案,那么类似精灵的内存使用量并不是那么大,对吧?

感谢。

2 个答案:

答案 0 :(得分:1)

Sprites仅保留对textureProxy的引用。即使您使用spriteWithFile:创建每个精灵,文件名也会缓存在CCTextureCache中。

答案 1 :(得分:1)

在cocos中为纹理和变量分配不同的记忆。因此,如果你继续使用相同的纹理创建只是变量将不会多次添加纹理内存。 CCSprite对象是自动释放的对象。