我在使用多个图集时遇到问题。
例如,我有 main_menu.atlas 和 game.atlas 以及这些场景的图像。在主菜单场景出现之前,我为它准备了图集( [SKTextureAtlas atlasNamed:@"main_menu"] )并且一切正常。但是当我开始游戏并在游戏中准备游戏图集( [SKTextureAtlas atlasNamed:@"game"] )后,我只看到空节点(带有红色交叉的矩形)。没有例外或警告 - 一切正常。
当我将所有游戏资产移动到 main_menu.atlas 并删除 game.atlas 时,一切正常 - 我在游戏中看到了精灵。但我想分离图集以进行性能优化。
我使用自己的助手进行 SpriteKit 纹理管理。它加载图集并返回我需要的纹理。所以我有这些方法:
- (void) loadTexturesWithName:(NSString*)name {
name = [[self currentDeviceString] stringByAppendingString:[NSString stringWithFormat:@"_%@", name]];
SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:name];
[self.dictAtlases setObject:atlas forKey:name];
}
- (SKTexture *) textureWithName:(NSString*)string {
string = [string stringByAppendingString:@".png"];
SKTexture *texture;
SKTextureAtlas *atlas;
for (NSString *key in self.dictAtlases) {
atlas = [self.dictAtlases objectForKey:key];
texture = [atlas textureNamed:string];
if(texture) {
return texture;
}
}
return nil; // never returns "nil" in my cases
}
“清洁”没有帮助。我做错了什么?提前致谢。