swift - 如何将在 assets.xassets 中创建的 Sprite Atlas 的纹理格式更改为 RGBA4444

标签 swift sprite-kit textures assets sktextureatlas

所以这是我的第一个应用程序,我被卡住了,将近一个星期我找不到解决方案。我为不同的角色创建了很多动画,发现我的游戏内存使用量约为 200 MB。之前我并不担心这个,因为许多初学者认为在我压缩我的 png 纹理之后这个尺寸也会减小。但那并没有发生。所以我开始搜索我能做些什么,发现将纹理格式从默认的 RGBA8888 更改为 RGBA4444 可以将内存使用量减少几乎一半。

我找到了答案 Sprite Kit Texture Atlas: Define Image Format (RGBA4444, RGB565, …)它说您可以从“build设置”>“输出纹理图集格式”更改输出格式。但这对我不起作用,因为我的 map 集是在 assets.xassets 文件夹中创建的。 “build设置 > 输出纹理图集格式”设置仅在您在项目文件夹中而不是在 assets.xassets 文件夹中创建图集时存在。

所以我的下一步是在 TexturePacker 中手动更改纹理格式。我这样做了,但问题是当我将这些新纹理添加回 assets.xassets 文件夹时,即使它们的质量很低,但它们仍然具有与 RGBA8888 格式的纹理相同的内存使用情况。

我阅读了很多资源,但没有找到任何有关如何在 Sprite Atlas 位于 assets.xassets 文件夹中时更改输出纹理图集格式的信息。

所以此时我不知道该怎么做,我的问题是 - 如何将 assets.xassets 文件夹中的 Sprite Atlases 的纹理格式更改为 RGBA4444?提前致谢。

最佳答案

在我使用 SpriteKit 进行的测试中,我发现所有纹理都以 RGBA8888(意味着 32BPP)的形式加载到内存中。纹理打包可能将数据作为每个组件 4 位存储在磁盘上,但是当以每个组件 8 位加载到内存中时,这在运行时并不重要。如果您对减少运行时内存使用的方法感兴趣,请查看:this SO answer有关 SpriteKit 内存减少着色器的信息。

关于swift - 如何将在 assets.xassets 中创建的 Sprite Atlas 的纹理格式更改为 RGBA4444,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39106245/

相关文章:

java - Libgdx 类不绘制纹理

swift - 如何将 CompactMap 应用于两个合并的发布者

ios - SpriteKit-最小化四位数

ios - swift - 跳跃时暂停动画

ios - 比较 OSX 和 iOS 两个节点的 SKColor?

c# - 从远程图像编辑立方体贴图天空盒

ios - 将 2 个纹理传递到 FragmenShader

swift - 查找 [String : [Int]] Swift dictionary] 中的最大数字

swift - 我想在扩展中使用开关

ios - Swift:如何在登录 View 后显示标签栏 Controller