在Xcode中,我有7个不同颜色的背景图像,每次在游戏中获得另外10个点时都会循环显示。
然而,在第一次玩游戏时,当它改变背景时它会滞后,因为它需要将它分配给内存然后加载它。
如何在级别开始之前将所有这些图像分配到内存中,以便它可以简单地切换到内存并且没有延迟。
答案 0 :(得分:0)
您可以将背景存储到NSCache中,它像NSDictionary一样使用。
NSCache *cache = [NSCache new]; // You should ivar this somewhere
然后创建一个类似
的方法-(UIImage *)loadImageWithKey:(NSString *)key {
UIImage *image = [cache objectForKey:key];
if (image == nil) {
image = [UIImage imageNamed:key];
[cache setObject:image forKey:key];
}
return image;
}
这会让你的游戏变得精简,如果遇到内存问题,它会把所有内容都丢弃在缓存中,所以如果你的游戏丢失缓存,你的游戏会有点慢,但你不会内存问题崩溃。
然后你所做的只是在你的加载屏幕上调用loadImageWithKey:无论什么资源,当需要它在更改背景时再次调用它并使用返回UIImage。
如果您仍然无法加载,那么您需要保持较小的背景,或者针对游戏,SpriteKit,SceneKit,Unity3D等更高效的内容进行构建。