通过为我的所有游戏动画预先设置强SKAction
s,动画是由Sprite Kit缓存的实际图像数据,以备将来使用。我想要理解的是,如果我将所有动画设置为保留SKAction
s还有预加载它们最初来自的SKTextureAtlas
的任何一点,我的想法不是SKAction
的图像{1}}已经加载到内存中了吗?
for(NSUInteger index=1; index<=15; index++) {
NSString *image = [NSString stringWithFormat:@"Drone_FLYING_%04ld", (long)index];
SKTexture *texture = [SKTexture textureWithImageNamed:image];
[[self framesDroneFlying] addObject:texture];
}
[self setDroneFlyAction:[SKAction animateWithTextures:[self framesDroneFlying] timePerFrame:DRONE_FLY_SPEED]];
我在Apple冒险示例中猜到了这一点,虽然作者使用了很多SKTextureAtlas
个,但他们不会在任何代码中执行单preloadTextureAtlases
。< / p>
答案 0 :(得分:1)
要保持(地图集)纹理的缓存,请使用SKTextureAtlas预加载方法并保留对atlas对象的强引用。就这些。这样可以将所有纹理保留在内存中。
您可以保持上面的代码不变,而不是加载图像,它将在图册中查找 - 前提是您正确设置了图集(即.atlas文件夹,所有资源都作为参考而不是组,而不是添加图像文件在项目的其他地方使用相同的名称)。