我应该使用什么方法预加载精灵?

时间:2014-02-05 02:54:21

标签: ios sprite-kit skspritenode

我知道你可以通过在游戏开始时创建它们来预加载spritenodes,但有没有更有效的方法呢?

1 个答案:

答案 0 :(得分:5)

请参阅pre-loading textures上的SKTexture部分。

创建SKTexture而不是SKSpriteNode。  然后,您可以使用以太preloadWithCompletionHandler:或类方法preloadTextures:withCompletionHandler:

处理预加载的一个好方法是使用纹理图集。通过使用纹理图集,您可以将所有纹理组合成一个包含所有纹理的较大“图纸”。这允许Sprite Kit仅创建一个纹理对象以加载到VRAM中。因为它只是显示精灵表的一部分,所以每次通过GPU时,地图集中的所有纹理都可以绘制到屏幕上。

以下是使用preloadWithCompletionHandler方法预加载纹理的方法:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

//  Preload the textures
self.artAtlas = [SKTextureAtlas atlasNamed:@"art"];
[self.artAtlas preloadWithCompletionHandler:^{
//  Textures loaded so we are good to go!

    /* Pick a size for the scene
     Start with the current main display size.
     */
    NSInteger width = [[NSScreen mainScreen] frame].size.width;
    NSInteger height = [[NSScreen mainScreen] frame].size.height;
    JRWTitleScene *scene = [JRWTitleScene sceneWithSize:CGSizeMake(width, height)];

    /* Set the scale mode to scale to fit the window */
    scene.scaleMode = SKSceneScaleModeAspectFit;

    [self.skView presentScene:scene];
}];

#if DEBUG
self.skView.showsFPS = YES;
self.skView.showsNodeCount = YES;
#endif

}

Sprite Kit Programming Guide的相关部分中有关于预加载纹理的更多信息。