我的节点上有几帧动画,第一次播放动画时滞后,fps下降。每次下次都很好,花花公子。
如何预加载纹理以使其工作顺畅?
我在加载游戏时运行此方法:
- (void)load
{
self.animationFrames = @[[SKTexture textureWithImageNamed:@"exp1"], [SKTexture textureWithImageNamed:@"exp2"],
[SKTexture textureWithImageNamed:@"exp3"], [SKTexture textureWithImageNamed:@"exp4"], [SKTexture textureWithImageNamed:@"exp5"], [SKTexture textureWithImageNamed:@"exp6"], [SKTexture textureWithImageNamed:@"exp7"], [SKTexture textureWithImageNamed:@"exp8"], [SKTexture textureWithImageNamed:@"exp9"]];
}
这种播放动画的方法:
-(void)playExplosionAnimation
{
self.size = CGSizeMake(250, 250);
SKAction *animation = [SKAction animateWithTextures:self.animationFrames timePerFrame:0.1];
[self runAction:animation completion:^{
self.hidden = YES;
}];
}
答案 0 :(得分:10)
您应该创建texture atlas并使用SKTextureAtlas
方法:
– preloadWithCompletionHandler:
+ preloadTextureAtlases:withCompletionHandler:
以下是文档中对此的说明:
Sprite Kit创建一个后台任务,用于加载纹理数据 地图集。然后,Sprite Kit将控制权返回给您的游戏。之后 加载纹理图集,调用完成处理程序。
如果您需要一次预加载多个纹理图集,请使用
preloadTextureAtlases:withCompletionHandler:
方法。