4

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

感谢您的回答

4

3 回答 3

10

首先,内存使用与性能的关系非常非常小。您可以用纹理填充整个内存,游戏不会在意。当您渲染它们时,它们会有所不同。然后只关心你用纹理填充了多少屏幕区域,它们被覆盖、批处理、旋转、缩放、着色和 alpha 混合的程度。这些是纹理渲染性能的主要因素。内存使用起着非常微不足道的作用。

你可能对我做的cocos2d sprite-batch 性能测试和一般cocos2d 性能分析感兴趣。两者都带有测试项目。

至于最大纹理尺寸,请查看我的Learn Cocos2D书中的表格: 在此处输入图像描述

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

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

在 iOS 5.1 中,Apple 还增加了 iPad 2 的最大纹理大小。最安全和最常用的纹理大小是 Retina 纹理的 2048x2048,标准分辨率纹理的 1024x1024。

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

于 2012-05-02T20:25:02.273 回答
1

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

对于大图像,您肯定希望使用批处理节点,因为它们已经过测试,以展示在处理大图像时最大的性能增益。虽然一般来说尽可能多地使用它们是个好主意。

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

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

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

于 2012-05-01T08:01:38.323 回答
0

据我所知.. 大小为 1024x1024 的批处理节点占用大约 4 MB 的空间,这只是纹理内存.. 应用程序的最大限制为 24 MB。因此,当您达到这 24 MB 空间时,游戏会变慢并在此之后崩溃。为了避免速度变慢,我一次最多使用 4 个批处理节点,即 16 MB。剩下 8 MB 用于变量和其他数据。在使用更多批处理节点之前,我曾经清理内存并删除未使用的批处理节点。我不知道 4 秒内的内存限制,但对于 iPhone 4,这是我学到的。考虑到这个逻辑,我曾经流畅地运行我的游戏。

于 2012-05-01T05:04:29.053 回答