我正在使用以下代码将纹理加载到 SpriteKit 中以用于动画 -
NSMutableArray *animFrames = [NSMutableArray array];
SKTextureAtlas *animTextureAtlas = [SKTextureAtlas atlasNamed: @"bearAnimation"];
for (int i = 1; i < animTextureAtlas.textureNames.count / 3; i++) {
NSString *texture = [NSString stringWithFormat:@"image%04d", i];
[animFrames addObject:[animTextureAtlas textureNamed:texture]];
}
// This is a strong property of an NSArray where I store frames of animation
self.bearAnimationFrames = animFrames;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[SKTexture preloadTextures:self.bearAnimationFrames withCompletionHandler:^{}];
});
我的问题是,在包含视网膜 iPad、非视网膜 iPad 和视网膜 iPhone 的每个图像的三个版本的图集上使用上述代码会导致应用程序使用所有这些图像的内存。不仅仅是它需要的那些。
我怎样才能使加载到内存中的唯一纹理是应用程序运行所需的设备?