建议的Cocos2d内存管理限制?

时间:2012-04-30 23:59:58

标签: objective-c memory-management cocos2d-iphone

对于Cocos2d中的图像是否有建议的限制,是否存在太大且占用太多内存?是否有一些规则,尺寸或Kb,以避免减慢游戏速度? (对于背景图像,或我的角色的图形(即使我使用批处理节点)?)

感谢您的回答

3 个答案:

答案 0 :(得分:10)

首先,内存使用与性能的关系非常非常非常少。你可以用纹理填满整个记忆,游戏也不在乎。当你将它们渲染到有差异的地方时。然后它只关注你填充纹理的屏幕区域,它们重叠,分批,旋转,缩放,阴影和alpha混合的重要程度。这些是纹理渲染性能的主要因素。内存使用起着非常微不足道的作用。

您可能对我所做的cocos2d sprite-batch performance test和一般cocos2d performance analysis感兴趣。两者都带有测试项目。

至于最大纹理大小,请查看我的Learn Cocos2D书中的表格: enter image description here

请注意,iPhone和iPhone 3G设备的纹理内存限制为24 MB。第3代(iPhone 3GS)和更新的设备不再具有该限制。另请注意,虽然设备可能安装了256 MB内存,但应用程序可以使用的内存明显减少。

例如,在iPad(第一代)上,建议不要使用超过100 MB的内存,最大可用内存达到125 MB左右,内存警告开始显示早在80-90 MB左右内存使用情况。

使用iOS 5.1 Apple还增加了iPad 2的最大纹理尺寸。最安全和最常用的纹理尺寸为Retina纹理2048x2048,标准分辨率纹理1024x1024。

表中没有iPod touch设备,因为它们几乎与同一代的iPhone型号相同,但不易识别。例如,iPod touch第3代包括具有8,16和32GB闪存的设备,但8GB型号实际上是第2代硬件。

答案 1 :(得分:1)

图像和纹理的尺寸大小取决于您支持的设备。较旧的设备支持小层,我认为大小为2048x2048。我认为目前的设备不存在这种限制。

对于大型图像,您肯定希望使用批处理节点,因为它们经过测试证明在处理大图像时可以获得最大的性能提升。虽然最好尽可能多地使用它们。

至于你可以加载多少,它实际上取决于设备。新款iPad拥有1 GB内存,旨在为大型图像提供更多可用内存。第一代iPad拥有1/4这么大的内存,根据我的经验,我开始看到应用程序崩溃,当它使用大约100 MB的内存时(使用工具确认)。

诀窍是只使用当前应用程序操作所需的内存,然后在移动到新场景或新的图像/精灵/纹理集时释放它。例如,您可以使用非常大的平铺纹理,其中只有最靠近视口的切片才会加载到内存中。从技术上讲,如果你从内存中删除那些在屏幕上看不到的视图部分,你可以拥有一个无限大小的视图。

当然,在处理大量资源时,请确保您的应用委托代表对内存警告做出适当的响应。

答案 2 :(得分:0)

根据我的知识..大小为1024x1024的批处理节点占用大约4 MB的空间,这只是纹理内存..应用程序的最大限制为24 MB。因此,当你达到这个24 MB的空间并且之后崩溃时,游戏会变慢。为避免缓慢,我一次最多使用4个批次节点,即16 MB。其余8 MB用于变量和其他数据。在使用更多批处理节点之前,我用来清理内存并删除未使用的批处理节点。我不知道4s内存限制,但是对于iPhone 4,这是我学到的。 记住这个逻辑我曾经顺利地运行我的游戏。