我有一个充满精灵的字段(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:] 花费了很多时间。
截屏:
有什么方法可以加快精灵的创建?
谢谢。