【问题标题】:How to load big size CCTMXTiledMap in cocos2d?如何在 cocos2d 中加载大尺寸 CCTMXTiledMap?
【发布时间】:2012-06-01 07:39:33
【问题描述】:

我尝试设计一个大世界的cocos2d游戏。世界平铺地图非常大,可能有 20 个 ipad 屏幕尺寸。我想知道如何将 CCTMXTiledMap 加载到屏幕中?如果我直接添加到屏幕,会不会占用太多内存?如果有,有没有办法解决这个问题?

【问题讨论】:

  • 我猜“游戏开发”论坛会是更有帮助的资源:)

标签: ios cocos2d-iphone


【解决方案1】:

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 的速度进行渲染。

【讨论】:

    【解决方案2】:

    如果你尝试一次加载所有的瓦片,肯定会占用太多内存。

    看看这个关于CCTMXTilesMap的教程。

    【讨论】:

    • 我以前读过这个教程。但它没有提及我的问题。一个很大的CCTMXTilesMap添加到屏幕后会占用太多内存,有什么办法解决这个问题?
    • @qichunren 这意味着 - 除了使用 TMX 地图之外,您还必须找到其他东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2019-07-08
    相关资源
    最近更新 更多