gpt4 book ai didi

c++ - Cocos2dx - 从缓存中清除特定纹理

转载 作者:行者123 更新时间:2023-11-28 02:43:30 24 4
gpt4 key购买 nike

由于“内存压力”,我在 iPhone 4s 上遇到崩溃问题。我的游戏设置如下:

  1. 始终保留在内存中的主场景 Sprite 表。
  2. 从单独的纹理(不是 Sprite 表)加载单独的游戏场景关卡。

当关卡完成并返回主场景时,我希望转储那些缓存的游戏场景纹理。最终发生的事情是,当你玩 3-4 个关卡时,它会因为内存不足而崩溃,因为它在一个关卡后永远不会释放内存。我不希望在游戏场景的生命周期之后缓存关卡纹理。当回到主场景时,需要释放这 block 内存。

我已经尝试删除所有对内存没有任何影响的游戏场景子项。我已经尝试寻找一种特定的方法来从缓存中清除我在这个游戏场景中加载的这些纹理。

有什么建议吗?

最佳答案

您使用的是 cocos2d v2 吗?您可能有内存泄漏,因为在必要时会删除未使用的纹理。尝试对您的应用进行性能分析,看看是否存在泄漏及其位置。

您也可以在适当的时候自己调用这些方法,但我怀疑您是否必须这样做:

[[CCTextureCache sharedTextureCache] removeUnusedTextures];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];

但是您所描述的听起来更像是内存泄漏。当您的应用程序收到内存警告时,缓存数据将被清除。在此清除过程中,将在纹理缓存上调用移除未使用的纹理方法等。如果在退出这些场景后很长时间内仍有 3/4 级别的数据潜伏,这听起来像是内存泄漏。

我假设这只会在访问多个场景后发生,问题不在于您的第 4 个场景只是试图加载超过设备可以处理的数据。

关于c++ - Cocos2dx - 从缓存中清除特定纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25146743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com