【问题标题】:Is there a nice way to share a CCTextureAtlas among multiple CCTMXTiledMaps?有没有一种在多个 CCTMXTiledMaps 之间共享 CCTextureAtlas 的好方法?
【发布时间】:2012-02-24 10:56:58
【问题描述】:

美好的一天,我是 cocos2d、objective-c 和堆栈溢出的新手。

我想知道是否可以在多个平铺地图之间共享一个纹理图集实例。我正在开发一个地图系统,它应该能够使用一个非常非常大的地图,但由于它需要在 iPhone 上运行,我必须将该地图分割成许多小地图以便能够剔除它们所以我的场景中有多个 CCTMXTiledMaps,它们不断地分配和释放。 这可以正常工作,但是在每次分配平铺地图时,都会生成一个 CCTextureAtlas,它会在加载期间冻结应用程序并占用大量内存,即使平铺图形在任何地方都相同。

我环顾四周,但所有教程都只用一张平铺地图覆盖了这个案例。我还尝试了一些可怕的黑客攻击,但这只会导致崩溃。我认为,我必须手动设置一个平铺地图实例(而不是使用 loadFromFile 函数),这样我可以更好地控制初始化,但我不知道在此期间我必须考虑什么。

【问题讨论】:

  • 提示:对于这样的不间断文本块,许多人会跳过它。最好给它一些结构以使阅读更容易。

标签: objective-c cocos2d-iphone


【解决方案1】:

如果您之前加载过纹理,瓷砖地图应该不会严重冻结游戏。

【讨论】:

  • 我从 CCTMXTiledMap 和 CCTMXLayer 派生了一个类,将 CCTexture2D 的加载替换为对预加载的引用,因为我的所有地图段都使用相同的精灵表。
  • 加速并不值得注意,因为多个 CCTextureAtlases 的初始化大约需要半秒(短暂但难看的应用程序冻结),而且它们需要大量 RAM。
猜你喜欢
  • 2016-06-05
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多