如何使Sprite Kit以正确的大小显示来自atlas的@ 2x图像?

时间:2014-01-02 18:41:47

标签: ios iphone sprite-kit sktextureatlas

当项目仅具有@ 2x图像,因为它仅针对视网膜显示设备时,图集Sprite Kit图谱会将RGBA8888_COMPRESSED设置的比例设置错误以与PVR纹理一起使用。 RGBA8888_PNG(默认)有时正常工作。

在切换到地图集之前,我在一个组中包含了所有的@ 2x图像并加载了它们:

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

没问题。正确的尺寸。

现在有了atlas和RGBA8888_COMPRESSED,我得到了SKTexture,图像太大了。完全相同的节点和配置。仅使用atlas的SKTexture。

为什么会这样?

3 个答案:

答案 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后缀)。