首页 > 解决方案 > Unity - 压缩的 .jpg 和 .png 文件在构建 apk 时会被解压缩

问题描述

在我的 2d 游戏中,我有大约20 个背景图像,我已经将它们转换为.jpg文件(编辑:并压缩它们)。它们的总大小约为9MB,但由于某种原因,当我构建 apk 时,它们未压缩并且占用了更多空间。如何防止这种情况?谢谢!

编辑:新问题

一些小三角形出现在我的按钮上,仅在游戏中。

这是我在场景中看到的(并且应该在游戏中看到): 在此处输入图像描述

这是我在游戏中看到的(后来添加的圆圈): 在此处输入图像描述

为什么会出现这种情况,我该如何解决这个问题?

谢谢

标签: androidunity3d

解决方案


当像素宽度/高度是 2 的幂时,图形的性能最高。性能非常重要,以至于大多数引擎(包括 Unity)会自动将所有纹理缩放到 2 的幂。

来自 Unity 的Importing Textures 文档:

如果平台或 GPU 不支持 NPOT 纹理大小,Unity 会将纹理缩放并填充到下一个 2 次幂大小。此过程会使用更多内存并导致加载速度变慢(尤其是在较旧的移动设备上)。通常,您应该只将 NPOT 大小用于 GUI 目的。

对于某些平台,上述规则导致 2300x1400 纹理缩放至 4096x2048。

对于 2D 精灵,Sprite Atlases 可以帮助您

雪碧图集文档:

Sprite Atlas 是将多个纹理合并为单个组合纹理的资产。

您可以创建一个主精灵图集,并将其设置为包含在您的构建中。这会将所有纹理打包成一个二次幂纹理。由于 Unity 将在构建中使用 Sprite Atlas 而不是单个纹理,因此它不会将所有原始纹理升级到 2 的幂。因此,您将节省大量空间。注意:您可能需要更改精灵图集中的最大纹理大小,因为您使用的纹理超过 2048。


推荐阅读