【发布时间】:2012-06-01 07:39:33
【问题描述】:
我尝试设计一个大世界的cocos2d游戏。世界平铺地图非常大,可能有 20 个 ipad 屏幕尺寸。我想知道如何将 CCTMXTiledMap 加载到屏幕中?如果我直接添加到屏幕,会不会占用太多内存?如果有,有没有办法解决这个问题?
【问题讨论】:
-
我猜“游戏开发”论坛会是更有帮助的资源:)
标签: ios cocos2d-iphone
我尝试设计一个大世界的cocos2d游戏。世界平铺地图非常大,可能有 20 个 ipad 屏幕尺寸。我想知道如何将 CCTMXTiledMap 加载到屏幕中?如果我直接添加到屏幕,会不会占用太多内存?如果有,有没有办法解决这个问题?
【问题讨论】:
标签: ios cocos2d-iphone
tilemap 的内存使用取决于图块的大小以及需要将多少图块转换为 sprite,例如,如果您要运行它们的动画。
假设您的图块大小为 32x32 像素。 iPad 尺寸的 20 倍意味着 20.480x15.360 点。除以 32 为您提供 640x480 瓦片的地图瓦片大小,或总共 307.200 个瓦片。假设每个图块使用 64 字节内存(在旧的 cocos2d 版本中,它小于 64 字节),您的地图最终会使用近 19 MB 的内存。这还不算纹理。
现在,对于您通过 CCSprite 接口处理的每个图块,例如通过更改其中一个精灵属性或在其上运行操作,cocos2d 会将该图块转换为常规 CCSprite。上次我检查时,每个 CCSprite 对象使用大约 420 字节。因此,如果您要更改每个图块的颜色属性,从而将所有图块转换为 CCSprite 对象,则图块映射将消耗 123 MB 内存。同样,不包括纹理。
你可以试试Tilemap renderer in KoboldTouch。它可以处理非常大的瓦片地图(数百万个瓦片,即 4000x4000 瓦片)并以 60 fps 的速度进行渲染。
【讨论】:
如果你尝试一次加载所有的瓦片,肯定会占用太多内存。
看看这个关于CCTMXTilesMap的教程。
【讨论】: