当项目仅具有@ 2x图像,因为它仅针对视网膜显示设备时,图集Sprite Kit图谱会将RGBA8888_COMPRESSED设置的比例设置错误以与PVR纹理一起使用。 RGBA8888_PNG(默认)有时正常工作。
在切换到地图集之前,我在一个组中包含了所有的@ 2x图像并加载了它们:
sprite = [SKSpriteNode spriteNodeWithImageNamed:@"theImage.png"];
没问题。正确的尺寸。
现在有了atlas和RGBA8888_COMPRESSED,我得到了SKTexture,图像太大了。完全相同的节点和配置。仅使用atlas的SKTexture。
为什么会这样?
答案 0 :(得分:12)
地图集图像应该具有@ 2x后缀,但不包含其中包含的文件。
无效:
atlas.png contains theImage@2x.png
正确使用:
atlas@2x.png contains theImage.png
我甚至不确定Sprite Kit是否支持PVR纹理。也许尝试确认您的设置适用于PNG,然后导出为PVR并尝试。
当你这样做时,一定要清理你的项目(Xcode:Project - > Clean)并从设备/模拟器中移除应用程序(此步骤至关重要!)否则该捆绑包仍将包含PNG地图集图像和你可能会误以为PVR是有效的,因为Sprite Kit实际上可能会加载仍然存在于包中的PNG图集,如果你不删除它并清理你的版本。
答案 1 :(得分:3)
对于这样的情况,你可以创建两个用于视网膜的地图集和一个用于1x resoultion的地图集。
例如,如果您的sprite atlas文件夹名为MySprites.atlas,您可以将其保留为1x图像,并为视网膜位图创建一个名为MySprites@2x.atlas的新图像。
图片在MySprites@2x.atlas目录中保留后缀e.x @ 2x~iPad
答案 2 :(得分:0)
免责声明:我只在XCode 6中测试了这个。
我打开文件系统中的Images.xcassets文件夹。里面是每个图像的一个文件夹,每个图像文件夹里面都有图像文件和一个名为Contents.json的json文件。它看起来像这样:
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "btn_orange.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
如果我将比例行更改为2x,即:
"scale" : "2x",
图像将显示为视网膜图像(不要使用@ 2x后缀)。