我有 2 个场景,两个场景共享相同的背景图像,所以我在两个场景的 init 方法中都有下面的代码并添加。一切正常。我的问题是,既然同一个图像文件被读取了两次,分配了内存并解除了分配,那么为什么我们不能使用单例模式将它存储在一个公共位置(spriteManager)并重用该实例?如果我这样做,当场景 1 被场景 2 替换时,内存将被释放。
我想到的一个是保留,但不知道如何以及在哪里处理这个保留。如果我的处理通用可重用精灵的方法是错误的,那么请建议我做同样的正确方法。我是这个 cocos2d 的新手,所以我还没有阅读 sprite sheet 的概念,现在我想保持一切简单。
CCSprite *bg = [CCSprite spriteWithFile:@"bg.png"];
第二个问题,我在替换两个重场景时阅读,由于释放第一个场景内存和分配下一个场景内存的重叠,会有一些内存泄漏的机会。因此,为了避免这种情况,我读到我们必须暂停几秒钟来加载轻量级场景(加载场景)。这是一个好的解决方案还是替换场景本身不会产生任何问题。
如果有一篇关于这篇文章标题的好文章(重用 Sprite 和替换场景),那就太好了。.