0

我有一个充满精灵的字段(30x30)。

在创建任何精灵之前,我正在使用以下代码预加载我的纹理图集:

- (void)preloadAllAtlases
{
    BGLog();

    _tilesAtlas = [SKTextureAtlas atlasNamed:@"Tiles"];
    _tilesTextures = [NSMutableDictionary new];
    __weak typeof (shared) weakSelf = self;

    [SKTextureAtlas preloadTextureAtlases:@[_tilesAtlas]
                    withCompletionHandler:^
                    {
                        for (NSString *textureFullName in weakSelf.tilesAtlas.textureNames) {
                            NSString *textureName = [textureFullName componentsSeparatedByString:@"@"][0];
                            weakSelf.tilesTextures[textureName] = [SKTexture textureWithImageNamed:textureName];
                        }
                    }];

}

此方法从单例调用一次 - 在 appicationDidFinishLaunchingWithOptions 中。

到时候我从 SKTextures 生成 SKSpriteNodes 并将复合节点(包含所有 SKSpriteNodes 的节点)添加到 SKScene。但是……显示/渲染 192 个精灵需要 1 到 1.5 秒。使用“时间分析器”,我发现 [SKSpriteNode spriteNodeWithTexture:] 花费了很多时间。

截屏: 在此处输入图像描述

有什么方法可以加快精灵的创建?

谢谢。

4

0 回答 0