我正在 cocos2d 中开发应用程序。该应用程序的架构非常简单:主菜单,您可以从中选择六个子菜单中的一个。点击子菜单启动后。在主菜单中,在加载所有纹理后,在 Retina iPad 上需要大约 408 MB(最大 450MB,因为我使用 removeUnusedTextures 方法),有很多高分辨率纹理(对于 Retina iPad)。
现在我有两种优化纹理的方案:
首先:我在应用程序开始时以及当他们需要其他纹理时加载最少的纹理集。
缺点:当应用程序加载纹理时,它会冻结片刻以从磁盘加载数据。无法使用 GCD 加载纹理,因为并非所有 cocos2d 类都是线程安全的,而且 cocos 抱怨所有纹理没有使用相同的 id( CCSprite is not using the same texture id
)。(注意:我正在加载 *.pvr.ccz 文件使用CCSpriteBatchNode
第二: 在场景开始时加载所有纹理。
缺点:当在内存中切换一段时间的场景时,有来自两个场景的资源(菜单和子菜单,尤其是从子菜单回到主菜单时)。由于内存增长到 600MB,iOS 杀死了应用程序,崩溃,世界末日。
如何解决这个问题?我试图在互联网上找到一些东西,但没有运气。
PS 我使用 TexturePacker 尽可能地优化纹理。