У меня проблема при использовании более одного атласа.
Например, у меня есть 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
}
"Чистый" не помогает. Что я делаю не так? Заранее спасибо.