android - Unity - 压缩的 .jpg 和 .png 文件在构建 apk 时会被解压缩
问题描述
在我的 2d 游戏中,我有大约20 个背景图像,我已经将它们转换为.jpg文件(编辑:并压缩它们)。它们的总大小约为9MB,但由于某种原因,当我构建 apk 时,它们未压缩并且占用了更多空间。如何防止这种情况?谢谢!
编辑:新问题
一些小三角形出现在我的按钮上,仅在游戏中。
为什么会出现这种情况,我该如何解决这个问题?
谢谢
解决方案
当像素宽度/高度是 2 的幂时,图形的性能最高。性能非常重要,以至于大多数引擎(包括 Unity)会自动将所有纹理缩放到 2 的幂。
来自 Unity 的Importing Textures 文档:
如果平台或 GPU 不支持 NPOT 纹理大小,Unity 会将纹理缩放并填充到下一个 2 次幂大小。此过程会使用更多内存并导致加载速度变慢(尤其是在较旧的移动设备上)。通常,您应该只将 NPOT 大小用于 GUI 目的。
对于某些平台,上述规则导致 2300x1400 纹理缩放至 4096x2048。
对于 2D 精灵,Sprite Atlases 可以帮助您
Sprite Atlas 是将多个纹理合并为单个组合纹理的资产。
您可以创建一个主精灵图集,并将其设置为包含在您的构建中。这会将所有纹理打包成一个二次幂纹理。由于 Unity 将在构建中使用 Sprite Atlas 而不是单个纹理,因此它不会将所有原始纹理升级到 2 的幂。因此,您将节省大量空间。注意:您可能需要更改精灵图集中的最大纹理大小,因为您使用的纹理超过 2048。
推荐阅读
- matlab - 一组子图的标题
- c - 为什么 gcc 打印“分段错误:11”?
- javascript - 检测点击外部组件
- c# - 使用 Entity Framework 的简单请求的大量执行时间
- odoo - odoo.tools.convert.ParseError:“在系统中找不到外部 ID:account.report_invoice_with_payments
- java - Mockito - 预期 0 个匹配器,记录 2 个(InvalidUseOfMatchersException)
- elasticsearch - Elasticsearch 连接器作为 Flink 中的源
- html - 如何反转 ul -> li 内的两个元素位置
- javascript - 为什么我的双引号被接收为单引号?
- python - Python 字符串替换 - 将“\”替换为“/”