Memory management 使用Cocos2d加载多个动画和纹理时使用的巨大内存,如何解决

Memory management 使用Cocos2d加载多个动画和纹理时使用的巨大内存,如何解决,memory-management,cocos2d-iphone,Memory Management,Cocos2d Iphone,我正在制作一个游戏,在进入游戏场景之前需要加载27个纹理Alta(每个1024*1024) 但有时我的游戏会因为收到内存警告而崩溃 我知道27个纹理Alta将使用: 4*27*1024*1024=108mb内存 这是一个巨大的数量,但我真的需要在进入游戏前加载它们 有没有办法解决我的问题? 任何想法都将不胜感激 顺便说一句: 我使用的是CoCoS2D1.0.1使用jpg而不是png它会使图像变得不透明你可以通过该图像的alpha图像使其透明,这将帮助你缩小你现在使用的几乎一半的大小。最好的建议是

我正在制作一个游戏,在进入游戏场景之前需要加载27个纹理Alta(每个1024*1024)

但有时我的游戏会因为收到内存警告而崩溃

我知道27个纹理Alta将使用: 4*27*1024*1024=108mb内存 这是一个巨大的数量,但我真的需要在进入游戏前加载它们

有没有办法解决我的问题? 任何想法都将不胜感激

顺便说一句:
我使用的是CoCoS2D1.0.1

使用jpg而不是png它会使图像变得不透明你可以通过该图像的alpha图像使其透明,这将帮助你缩小你现在使用的几乎一半的大小。

最好的建议是检查你的设计,以及“需要”预加载所有这些纹理。我倾向于只预加载最常用的纹理(动画和静态贴图对象)

例如,我有用于在地图上为16个角色类的行走设置动画的纹理。我将“空闲”动画重新组合在4个纹理中,并预加载这些纹理,因为最初,当士兵进入场景时,它会空闲。移动动画位于单独的纹理中,这些纹理根据移动中的每个角色类的移动方向实时加载。当角色停止行走(空闲)时,我将从缓存中删除未使用的纹理以及未使用的精灵帧

另外:还有其他的内存管理方法。对于某些纹理,可以使用16位格式(默认为RGB88888)。通过转换为压缩PVR格式,您可能会有所收获(这同样是有损的,但对于某些纹理也可以)


查看并进一步了解coco中的图片格式,以及与内存消耗(以及负载、渲染速度)的关系。但是,在您开始优化之前,再次确认您除了预加载所有方法之外别无选择

即使使用jpg文件,仍然使用相同的issue@Haroon:cocos(CCTextureCache)将在ios版本>4.0时将jpg转换为png。不要简单地将其转换为缩小大小。我们可以缩小jpg的大小,而不会丢失分辨率。@YvesLeBorg请解释更多,你想说的是什么。在我的一个游戏中,我将尺寸缩小了前一个尺寸的1/2。