Sprite kit 如何将带有alpha的PNG转换为RGBA4444,以便在SpriteKit SKTexture中使用?

Sprite kit 如何将带有alpha的PNG转换为RGBA4444,以便在SpriteKit SKTexture中使用?,sprite-kit,skspritenode,sktexture,Sprite Kit,Skspritenode,Sktexture,我有一堆透明的PNG,我想在带有SKTextures的SKSpriteNode动画中使用。我需要通过将纹理质量从rgba888降低到RGBA4444来调整SKTextures的内存使用量 如何使用RGBA4444纹理格式初始化SKTexture 编辑:IOS Swift游戏开发食谱:游戏开发的简单解决方案建议SKTexture支持如下PVRTC文件: let atlas = SKTextureAtlas(named: "Atlas") // Atlas.atlasc in your projec

我有一堆透明的PNG,我想在带有
SKTexture
s的
SKSpriteNode
动画中使用。我需要通过将纹理质量从
rgba888
降低到
RGBA4444
来调整
SKTexture
s的内存使用量

如何使用
RGBA4444
纹理格式初始化
SKTexture

编辑:IOS Swift游戏开发食谱:游戏开发的简单解决方案建议
SKTexture
支持如下PVRTC文件:

let atlas = SKTextureAtlas(named: "Atlas") // Atlas.atlasc in your project
let texture = atlas.textureNamed("original_texture_001.png")


但是,我无法使用
SKSpriteNode
来显示以这种方式生成的纹理。

我刚刚尝试过,在Xcode 8中,输出纹理图集所描述的选项在构建设置中不再可用

我怀疑(但我可能错了)控件现在已在压缩中移动,如下图所示


我通过使用生成纹理地图集(.atlasc)文件来避免这种情况。使用TexturePacker,您可以设置并调整压缩,然后访问项目中的纹理图集,如下所示:

let atlas = SKTextureAtlas(named: "Atlas") // Atlas.atlasc in your project
let texture = atlas.textureNamed("original_texture_001.png")

我想让
SKTexture
压缩内存中的纹理数据的唯一选择是使用纹理地图集?我没有找到任何
SKTexture
初始值设定项选项可以指出纹理压缩。@MarkusRautopuro:可能是的。不过,你也应该使用Sprite Atlas来实现更快的CPU-GPU通信。问题是,我有大量的PNG文件和它们。唯一的选择是以编程方式创建sprite atlas。但是,我没有找到方法将压缩设置为
SKTextureAtlas
。正如MoDJ在回答中指出的那样,Sprite Kit中的所有纹理都将作为RGBA888加载到内存中。我也需要确认一下。