如何在cocos2d中加载大尺寸的CCTMXTiledMap?

时间:2012-06-01 07:39:33

标签: ios cocos2d-iphone

我尝试设计一个拥有大世界的cocos2d游戏。 wolrd平铺地图非常大,可能有20个ipad屏幕尺寸。我想知道如何将CCTMXTiledMap加载到屏幕中?如果我直接将它添加到屏幕上,它会使用太多内存吗?如果是这样,有解决方案来解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

tilemap的内存使用量取决于tile的大小以及需要将多少tile转换为sprite,例如,如果你想为它们设置动画。

假设您的图块大小为32x32像素。 iPad尺寸的20倍意味着20.480x15.360点。除以32为您提供640x480瓷砖地图的瓷砖尺寸,或总共307.200瓷砖。假设每个磁贴使用64字节内存(在较旧的cocos2d版本中,它小于64字节),您的映射最终使用大约19 MB的内存。这甚至不计算纹理。

现在,对于通过CCSprite接口寻址的每个tile,例如通过更改其中一个sprite属性或对其执行操作,cocos2d会将该tile转换为常规CCSprite。上次检查时,每个CCSprite对象使用大约420个字节。因此,如果您要更改每个图块的颜色属性,从而将所有图块转换为CCSprite对象,则图块图将消耗123 MB的内存。同样,不包括纹理。

您可以尝试Tilemap renderer in KoboldTouch。它可以处理非常大的tilemaps(数百万个tile,即4000x4000个tile)并以60 fps渲染。

答案 1 :(得分:0)

如果你试图将所有的瓷砖加载到一个,它肯定会占用太多的内存。

查看本教程关于CCTMXTilesMap