如何在Sprite Kit中预加载纹理?

时间:2014-02-28 21:12:32

标签: ios textures sprite-kit

我的节点上有几帧动画,第一次播放动画时滞后,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;
    }];
}

1 个答案:

答案 0 :(得分:10)

您应该创建texture atlas并使用SKTextureAtlas方法:

– preloadWithCompletionHandler:
+ preloadTextureAtlases:withCompletionHandler:

以下是文档中对此的说明:

  

Sprite Kit创建一个后台任务,用于加载纹理数据   地图集。然后,Sprite Kit将控制权返回给您的游戏。之后   加载纹理图集,调用完成处理程序。

     

如果您需要一次预加载多个纹理图集,请使用    preloadTextureAtlases:withCompletionHandler: 方法。