0

我是 Cocos2D 和 CocosBuilder 的新手,我有一些关于内存使用的问题。

1)在 CocosBuilder(或 Cocos2D)中,如果我对同一场景中的所有 CCSprite 对象使用相同的纹理图集(spritesheet),是否会比每个精灵的单独纹理节省内存使用?准确地说,如果我使用一个 4k*4k 纹理,游戏是否只​​需要一个纹理图集的内存(例如 4k * 4k * 32 位)?

2) 我可以为不同的精灵使用不同的纹理模式来节省内存吗?例如,对背景图像使用无 alpha 模式。换句话说,Cocos2D 能否在同一个场景中处理不同的纹理模式?

3)我必须在一个场景中实现一个包含大约 100 个对象的游戏,总共三个场景。现在,同一场景中的所有对象都使用相同的 spritesheet。尽管如此,在场景之间切换几次后游戏还是崩溃了。每次我收到内存警告信息。解决此问题的最佳方法是什么?我试图转储所有这些缓存,但仍然崩溃。

非常感谢!

4

1 回答 1

1

1) 一个纹理只加载一次,无论有多少对象从中绘制。通常,使用单个纹理不会节省(很多)内存,但是通过从尽可能少的纹理图集而不是单个图像文件纹理中绘制来提高加载时间和渲染性能。

2) 是的。例如,您可以在同一场景中拥有 RGB565(无 alpha)、RGB5551(布尔 alpha)或 RGBA4444/RGBA8888 纹理,没问题。

3)使用仪器。检查是否有泄漏。如果您不使用 ARC,那么现在是时候切换了。PS:不要清除缓存,这只是浪费时间和内存,因为最终需要再次重新加载纹理。如果你想释放一个你确定当时没有使用并且在不久的将来不会使用的纹理,那么取消缓存这些纹理并且只取消那些。

于 2013-05-01T01:03:45.513 回答