Подтвердить что ты не робот

Как заставить Sprite Kit отображать @2x изображения из атласа в правильном размере?

Когда проект имеет только изображения @2x, поскольку он предназначен только для устройств отображения сетчатки, атлас атласа Sprite Kit неправильно использует масштаб с настройкой RGBA8888_COMPRESSED для использования с текстурами PVR. RGBA8888_PNG (по умолчанию) иногда работает нормально.

До перехода к атласу у меня было все @2x изображения в группе и загрузили их с помощью:

sprite = [SKSpriteNode spriteNodeWithImageNamed:@"theImage.png"];

Нет проблем. Правильный размер.

Теперь с атласом и RGBA8888_COMPRESSED я получаю SKTexture, и изображение слишком велико. Точные узлы и конфигурация. Вместо этого используйте только SKTexture из атласа.

Почему это происходит?

4b9b3361

Ответ 1

Изображение атласа должно иметь суффикс @2x, но не файлы, содержащиеся в нем.

Не работает:

atlas.png contains [email protected]

Правильное использование:

[email protected] contains theImage.png

Я даже не уверен, что Sprite Kit поддерживает PVR-текстуры для начала. Возможно, попробуйте подтвердить, что ваша настройка работает с PNG, а затем экспортируется как PVR и попробуйте это.

Когда вы это сделаете, обязательно очистите проект (Xcode: Project → Clean) и удалите приложение с устройства/симулятора (этот шаг имеет решающее значение!), в противном случае пакет все равно будет содержать изображение атласа PNG, и вы может быть обмануто думать, что PVR работает, потому что Sprite Kit может фактически загрузить атлас PNG, который все еще существует в комплекте, если вы не удалите его и не очистите свою сборку.

Ответ 2

Для такой ситуации вы можете создать две атласы для сетчатки и одну для 1x resoultion.

Если, например, ваша папка атласа спрайта была названа MySprites.atlas, вы можете сохранить ее только для 1x изображений и создать новую с именем [email protected] для растровых изображений сетчатки.

Изображения сохраняют суффикс e.x @2x ~ iPad внутри каталога [email protected]

Ответ 3

Отказ от ответственности: я тестировал это только в XCode 6.

Я открываю папку Images.xcassets в файловой системе. Внутри это одна папка для каждого изображения, и внутри каждой папки с изображениями есть файлы изображений плюс json filed, называемые Contents.json. Это выглядит примерно так:

    {
  "images" : [
    {
      "idiom" : "universal",
      "scale" : "1x",
      "filename" : "btn_orange.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

Если я изменил строку шкалы на 2x, то есть:

"scale" : "2x",

изображение будет отображаться как изображение сетчатки (и не использовать суффикс @2x).