我正在开发一款游戏,我想创建每个级别的缩略图,以便可以在菜单中使用它们。我用 CCRenderTexture 这样做:
CCRenderTexture *renderer = [CCRenderTexture renderTextureWithWidth:bounds.size.width height:bounds.size.height];
ScreenShotLayer *scene = [[ScreenShotLayer alloc] init];
[renderer begin];
[scene visit];
[renderer end];
[renderer saveToFile:[NSString stringWithFormat:@"level%@.png", level.levelId] format: kCCImageFormatPNG];
这一切都很好,我的图像被保存了,但它占用了大量的内存并且永远不会释放它。在不保存这些数据的情况下,我的游戏需要 8 MB 的 RAM。当我保存图像时,它需要超过 430 MB。
如果我保持一切不变,只是注释掉saveToFile
调用,我就会回到我的 8 MB 内存使用量。我已经使用泄漏工具对其进行了调试,但没有发现任何泄漏。
这是框架问题吗?有没有更好的方法来处理这个?我在做傻事吗?
我的整个游戏都是开源的,你可以在https://github.com/zgrossbart/bridges获得它。此代码发生在LevelMgr.mm中。
谢谢您的帮助,
扎克