使用纹理在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倍以上的内存吗? (换句话说,纹理会复制到每个代理,还是精灵只是一个引用原始纹理的“空盒子”?
如果后者是答案,那么类似精灵的内存使用量并不是那么大,对吧?
感谢。
答案 0 :(得分:1)
Sprites仅保留对textureProxy
的引用。即使您使用spriteWithFile:
创建每个精灵,文件名也会缓存在CCTextureCache
中。
答案 1 :(得分:1)
在cocos中为纹理和变量分配不同的记忆。因此,如果你继续使用相同的纹理创建只是变量将不会多次添加纹理内存。 CCSprite对象是自动释放的对象。