我尝试设计一个大世界的cocos2d游戏。世界平铺地图非常大,可能有 20 个 ipad 屏幕尺寸。我想知道如何将 CCTMXTiledMap 加载到屏幕中?如果我直接添加到屏幕,会不会占用太多内存?如果是这样,是否有解决此问题的方法?
问问题
1988 次
2 回答
1
瓦片地图的内存使用取决于瓦片的大小以及需要将多少瓦片转换为精灵,例如,如果您想运行它们的动画。
假设您的图块大小为 32x32 像素。iPad 尺寸的 20 倍意味着 20.480x15.360 点。除以 32 为您提供 640x480 瓦片的地图瓦片大小,或总共 307.200 个瓦片。假设每个图块使用 64 字节内存(在较旧的 cocos2d 版本中它小于 64 字节),您的地图最终会使用近 19 MB 的内存。这还不算纹理。
现在,对于您通过 CCSprite 接口处理的每个图块,例如通过更改其中一个精灵属性或在其上运行操作,cocos2d 将把该图块转换为常规 CCSprite。上次我检查时,每个 CCSprite 对象使用大约 420 字节。因此,如果您要更改每个图块的颜色属性,从而将所有图块转换为 CCSprite 对象,则图块映射将消耗 123 MB 内存。同样,不包括纹理。
你可以试试 KoboldTouch 中的Tilemap 渲染器。它可以处理非常大的贴图(数百万贴图,即 4000x4000 贴图)并以 60 fps 的速度渲染。
于 2012-06-02T11:00:50.797 回答
0
如果你试图一次加载所有的瓦片,它肯定会占用太多的内存。
看看这个关于CCTMXTilesMap的教程。
于 2012-06-01T07:46:54.160 回答