Let me start by stating:You can definitely use 2+ texture atlases :)
Now to issue at hand:
You are loading menu atlas first (first in dict) then game atlas. When you grab menu textures all is fine. When you go out to grab game texture you first look in menu atlas (No image is available so atlas returns placeholder texture defined in this doc not nil as you expect.
This code should work as desired
- (SKTexture *) textureWithName:(NSString*)string {
string = [string stringByAppendingString:@".png"];
SKTexture *texture;
SKTextureAtlas *atlas;
for (NSString *key in self.dictAtlases) {
atlas = [self.dictAtlases objectForKey:key];
if([[atlas textureNames] containsObject:string]){
texture = [atlas textureNamed:string];
return texture;
}
}
return nil;
}
Also, it will work fine without adding .png :)