.png动画spritekit性能下降

问题描述:

我在我的项目中有一个.png动画,700张图片,大小为150 px x 150 px。.png动画spritekit性能下降

它工作正常,但每次动画开始,整个游戏冻结约0.1秒。像它的加载,但我在initWithSize中实现了.png数组。像这样:

SKTextureAtlas *barrierUfoAtlas = [SKTextureAtlas atlasNamed:@"BarrierUfoAnimation"]; 
NSArray *barrierUfoAtlasNames = [barrierUfoAtlas textureNames]; 
NSArray *sortetBarrierUfoAtlasNames = [barrierUfoAtlasNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
NSMutableArray *barrierUfoTextures = [NSMutableArray array]; 

for (NSString *filename in sortetBarrierUfoAtlasNames) { 
    SKTexture *texture = [barrierUfoAtlas textureNamed:filename]; 
    [barrierUfoTextures addObject:texture]; 
} 
self.barrierUfoAnimation = [SKAction animateWithTextures:barrierUfoTextures timePerFrame:0.024]; 

然后边玩边约1-2分钟。动画开始了。 现在不需要加载任何东西,只需启动动画即可。 有什么方法可以改进它?

+1

而被加载所有的游戏资源可以有一个“加载”消息,并开始你的游戏玩一次。 – sangony 2015-01-20 23:00:19

+0

好的谢谢,但是当我实现与.png文件的数组是不是已经加载?你能更具体地了解你的想法吗?如何安排? – NeoGER89 2015-01-21 00:37:50

+1

您是否知道150x150乘以700大约等于60 mb的内存使用量?根据其他内存使用情况和设备的不同,您可能无法同时将所有内容都纳入内存。 – LearnCocos2D 2015-01-21 00:48:46

这是很多方面预加载之一:

@implementation GameScene { 
SKTextureAtlas *myAtlas1; 
BOOL loadingComplete; 
} 

-(id)initWithSize:(CGSize)size { 
    if (self = [super initWithSize:size]) { 

    // the usual stuff... 

    loadingComplete = false; 
    [self loadMyAtlas1]; 
    } 

    return self; 
} 

-(void)loadMyAtlas1 { 
    myAtlas1 = [SKTextureAtlas atlasNamed:@"MyAtlasName"]; 
    [SKTextureAtlas preloadTextureAtlases:[NSArray arrayWithObject:myAtlas1] withCompletionHandler:^{ 
    [self finishedLoading]; 
    }]; 
} 

-(void)finishedLoading { 
    // other stuff you might do here 
    loadingComplete = true; 
} 

-(void)update:(CFTimeInterval)currentTime { 
    if(loadingComplete) { 
     // run game code 
    } else { 
     // wait for the water to boil 
    } 
} 
+0

谢谢你,这对我很有用。不知道这种预加载方法。 – NeoGER89 2015-01-21 02:14:30

+1

预加载是答案。即使我在场景开始时填充数组,动画在第一时间仍然滞后。预加载解决这个问题。谢谢。 – mkeremkeskin 2015-11-03 14:42:02

+0

感谢作品完美! – StackBuddy 2016-10-25 20:59:48