15

When a project only has @2x images because it only targets retina display devices, atlas Sprite Kit atlas gets the scale wrong with the RGBA8888_COMPRESSED setting to use with PVR textures. RGBA8888_PNG (the default) sometimes works ok.

Before switching to atlas, I had all @2x images in a group and loaded them with:

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

No problems. Correct size.

Now with atlas and RGBA8888_COMPRESSED, I get the SKTexture and the image is way too large. Exact same nodes and configuration. Only using SKTexture from atlas instead.

Why does this happen?

4

3 回答 3

12

atlas 图像应该有@2x 后缀,但不是其中包含的文件。

不会工作:

atlas.png contains theImage@2x.png

正确用法:

atlas@2x.png contains theImage.png

我什至不确定 Sprite Kit 一开始就支持 PVR 纹理。也许尝试确认您的设置适用于 PNG,然后导出为 PVR 并尝试。

当你这样做时,一定要清理你的项目(Xcode:Project -> Clean)并从设备/模拟器中删除应用程序(这一步至关重要!)否则捆绑包仍将包含 PNG atlas 图像,你可能会被愚弄认为 PVR 有效,因为如果您不删除它并清理您的构建,Sprite Kit 实际上可能会加载仍然存在于包中的 PNG 图集。

于 2014-01-02T21:21:51.137 回答
3

对于这种情况,您可以创建两个图集,一个用于视网膜,一个用于 1x 分辨率。

例如,如果您的 sprite atlas 文件夹命名为 MySprites.atlas,您可以只为 1x 图像保留它,并为视网膜位图创建一个名为 MySprites@2x.atlas 的新文件夹。

图像在 MySprites@2x.atlas 目录中保留后缀 ex @2x~iPad

于 2014-05-21T11:06:00.793 回答
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 后缀)。

于 2014-07-03T10:55:58.860 回答