Инструмент TextureAtlas не читает атлас текстур - Ошибка генератора атласа текстур SpriteKit

Я пытаюсь сделать узел с простой анимацией, поэтому я создал анимацию с каждым отдельным кадром в виде файла .png, засунул их все в папку и назвал ее stoneanimation2.atlas.

Это код, который я пробовал:

SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"stoneanimation2"];


    SKTexture *stone2 = [atlas textureNamed:@"stone2.png"];
    SKTexture *stone3 = [atlas textureNamed:@"stone3.png"];
    SKTexture *stone4 = [atlas textureNamed:@"stone4.png"];
    SKTexture *stone5 = [atlas textureNamed:@"stone5.png"];
    SKTexture *stone6 = [atlas textureNamed:@"stone6.png"];
    SKTexture *stone7 = [atlas textureNamed:@"stone7.png"];
    SKTexture *stone8 = [atlas textureNamed:@"stone8.png"];
    SKTexture *stone9 = [atlas textureNamed:@"stone9.png"];
    SKTexture *stone10 = [atlas textureNamed:@"stone10.png"];
    SKTexture *stone11 = [atlas textureNamed:@"stone11.png"];
    SKTexture *stone12 = [atlas textureNamed:@"stone12.png"];
    SKTexture *stone13 = [atlas textureNamed:@"stone13.png"];
    SKTexture *stone14 = [atlas textureNamed:@"stone14.png"];
    SKTexture *stone15 = [atlas textureNamed:@"stone15.png"];
    SKTexture *stone16 = [atlas textureNamed:@"stone16.png"];
    SKTexture *stone17 = [atlas textureNamed:@"stone17.png"];
    SKTexture *stone18 = [atlas textureNamed:@"stone18.png"];
    SKTexture *stone20 = [atlas textureNamed:@"stone20.png"];
    SKTexture *stone21 = [atlas textureNamed:@"stone21.png"];
    SKTexture *stone22 = [atlas textureNamed:@"stone22.png"];
    SKTexture *stone23 = [atlas textureNamed:@"stone23.png"];
    SKTexture *stone24 = [atlas textureNamed:@"stone24.png"];
    SKTexture *stone25 = [atlas textureNamed:@"stone25.png"];
    SKTexture *stone26 = [atlas textureNamed:@"stone26.png"];
    SKTexture *stone27 = [atlas textureNamed:@"stone27.png"];
    SKTexture *stone28 = [atlas textureNamed:@"stone28.png"];

    NSArray *atlasTexture = @[stone2,stone3,stone4,stone5,stone6,stone7,stone8,stone9,stone10,stone11,stone12,stone13,stone14,stone15,stone16,stone17,stone18,stone20,stone21,stone22,stone23,stone24,stone25,stone26,stone27,stone28];

    stoneAnimation = [SKAction animateWithTextures:atlasTexture timePerFrame:.01];

Раньше это работало, когда у меня было всего около 10 кадров. Но я решил добавить больше, и я думаю, что это что-то испортило с самим атласом, потому что Xcode говорит «Ошибка генератора атласа текстуры SpriteKit». Это сообщение об ошибке:

Command /Applications/Xcode.app/Contents/Developer/Tools/../usr/bin/TextureAtlas failed with exit code 11

Каждый раз, когда я полностью создаю новый атлас или просто переименовываю его, чтобы проверить, работает ли это, я получаю ту же ошибку. Кроме того, в настройках сборки для параметра «Включить генератор Atlas» установлено значение «ДА». И я попытался сбросить симулятор IOS и все, что я могу придумать! Пожалуйста помоги!


person user3386154    schedule 06.03.2014    source источник
comment
Если кто-то еще получает эту ошибку, я понял, почему это происходит: все, что мне нужно было сделать, это щелкнуть правой кнопкой мыши атлас текстуры и нажать «Добавить». Это не имело никакого отношения к моему коду.   -  person user3386154    schedule 12.06.2014
comment
У меня такая же ошибка. Пожалуйста, скажите мне, как я могу это решить   -  person User1234    schedule 20.07.2014
comment
Итак, моя проблема заключалась в том, что атлас текстур не был правильно импортирован, я думаю, это было потому, что я импортировал его раньше правильно, а затем изменил. Итак, я получил? по текстурному атласу в навигаторе проекта. Мне не нужно было менять какой-либо код, все, что я сделал, это щелкнул правой кнопкой мыши по атласу текстур и выбрал: управление исходным кодом › добавить выбранный файл.   -  person user3386154    schedule 22.07.2014


Ответы (3)


Эта ошибка произошла со мной, когда у меня было слишком много больших изображений в моем атласе текстур. После разделения на два отдельных атласа игра строилась нормально.

person mikewagz    schedule 08.11.2014

Я понял, что моя проблема заключалась в том, что атлас текстур был неправильно импортирован, я думаю, это было потому, что я импортировал его раньше правильно, а затем изменил. Итак, я получил? по текстурному атласу в навигаторе проекта. Мне не нужно было менять какой-либо код, все, что я сделал, это щелкнул правой кнопкой мыши по атласу текстуры и щелкнул: управление исходным кодом> добавить выбранный файл.

Это не имело ничего общего с моим кодом

person user3386154    schedule 09.11.2014

Добавить свойство NSArray *_stoneFrames;

-(void)addObject
 {
  NSMutableArray *stoneAnimationFrames = [NSMutableArray array];
  SKTextureAtlas *stoneAnimatedAtlas = [SKTextureAtlas atlasNamed:@"stoneanimation2"];
  int numImages = stoneAnimatedAtlas.textureNames.count;
  for (int i=1; i <= numImages; i++) {
    NSString *textureName = [NSString stringWithFormat:@"stone%d", i];
    SKTexture *temp = [stoneAnimatedAtlas textureNamed:textureName];
    [stoneAnimationFrames addObject:temp];
  }
 _stoneFrames = stoneAnimationFrames;
 SKTexture *temp = _stoneFrames[0];
 _stone = [SKSpriteNode spriteNodeWithTexture:temp];
 [self addChild:_stone];
 [self animateStone];
}

-(void)animateStone
 {
      [_stone runAction:[SKAction repeatActionForever:
                  [SKAction animateWithTextures:_stoneFrames
                                   timePerFrame:0.1f
                                         resize:NO
                                        restore:YES]] withKey:@"animated Stone"];
    return;
}

Вы также можете проверить этот пост в блоге http://www.raywenderlich.com/45152/sprite-kit-tutorial-animations-and-texture-atlases

person user3233109    schedule 09.03.2014