Как заставить Sprite Kit отображать @2x изображения из атласа в правильном размере?
Когда проект имеет только изображения @2x, поскольку он предназначен только для устройств отображения сетчатки, атлас атласа Sprite Kit неправильно использует масштаб с настройкой RGBA8888_COMPRESSED для использования с текстурами PVR. RGBA8888_PNG (по умолчанию) иногда работает нормально.
До перехода к атласу у меня было все @2x изображения в группе и загрузили их с помощью:
sprite = [SKSpriteNode spriteNodeWithImageNamed:@"theImage.png"];
Нет проблем. Правильный размер.
Теперь с атласом и RGBA8888_COMPRESSED я получаю SKTexture, и изображение слишком велико. Точные узлы и конфигурация. Вместо этого используйте только SKTexture из атласа.
Почему это происходит?
Ответы
Ответ 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).