当您使用纹理在 cocos 上创建 Sprite 时,您会分配内存。
类似于:
CCTexture2D *textureProxy = [[CCTexture2D alloc] initWithImage:image];
CCSprite *proxy1 = [CCSprite spriteWithTexture:textureProxy];
我的问题是:假设我想要多个使用相同纹理的 Sprite ,而我这样做了
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 倍的内存吗? (或者换句话说,纹理会被复制到每个代理,还是 Sprite 只是一个引用原始纹理的“空盒子”?
如果后者是答案,那么类似 Sprite 的内存使用量不会那么大,对吧?
谢谢。
最佳答案
Sprites 仅保留对 textureProxy
的引用。即使您使用 spriteWithFile:
创建每个 Sprite ,文件名也会缓存在 CCTextureCache
中。
关于iphone - Cocos2D iPhone - 这会节省内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170601/