来自纹理图集的纹理未加载或出现

Textures from texture atlas are not loading or appearing

由于某些奇怪的原因,我的纹理图集中的纹理未加载。我不知道为什么。

下面是我通常declare/code纹理

     -(SKSpriteNode *)background {
SKSpriteNode *background;
NSArray *backgroundIpad;

    background = [SKSpriteNode spriteNodeWithImageNamed:@"dodgR - main background"];
    background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    background.size = CGSizeMake(1136, 640);

    NSArray *backgroundIphone = @[[SKTexture textureWithImageNamed:@"dodgR - animation 1.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 2.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 3.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 4.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 5.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 6.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 7.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 8.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 9.jpg"],
                                  [SKTexture textureWithImageNamed:@"dodgR - animation 10.jpg"]];

    SKAction *backgroundIphoneAnimation = [SKAction animateWithTextures:backgroundIphone timePerFrame:0.05];

    SKAction *backgroundIphoneRepeat = [SKAction repeatActionForever:backgroundIphoneAnimation];

    [background runAction:backgroundIphoneRepeat];






background.name = @"background";
return background;

}

我的纹理图集名称是sprites.atlas 非常感谢任何帮助,谢谢

您上面的代码仅在使用不在纹理图集中的图像时才有效,因为它实际上并未使用纹理图集。

如果不使用 SKTextureAtlas,就无法从 Atlas(据我所知)中提取图像。所以你不能直接抓取那些图像。

SWIFT:

let atlas = SKTextureAtlas(named: "BackgroundImages") // atlas name
var backgroundFrames = [SKTexture]()

let imageCount = atlas.textureNames.count
for var i=1; i<= imageCount/2; i++ {
  let textureName = "dodgR - animation \(i)"
  backgroundFrames.append(atlas.textureNamed(textureName))
}

OBJECTIVE-C(未测试)

SKTextureAtlas *atlas = [SKTextureAtlas named:@"BackgroundImages"]; // atlas name
NSMutableArray *backgroundFrames = [NSMutableArray new];

int imageCount = atlas.textureNames.count;

for (int i = 1; i <= imageCount/2; i++) {
   NSString *textureName = @"dodgR - animation \(i)";
   [bacgroundFrames addObject:[atlas textureNamed:textureName]];
}

奖励:Xcode7 现在允许您在资产文件夹中创建精灵图集。