Unity-图片压缩格式

怎么了

20210331出版本,第一次出 iOS 包,QA 过来说登陆界面的 UI 图片都有锯齿,Android
包不会。


怎么办

检查登陆界面的图片资源设置,都是用的 RGBA PVRTC4 打的图集 ,于是改下压缩格式试了下,真就好了。问了老大,带透明图压缩成 RGBA PVRTC4 确实是会这样。于是把带透明像素的图用 RGBA32,其他的用 RGB PVRTC4。


总结

为何要纹理压缩
  1. GPU 可以直接读取,无需再解压。
  2. 减少内存消耗。
  3. 减少图片体积。
常用方案

Android :ETC1 ,因为不带a通道,所以对于有透明像素的图片,需要再拆出一张 ETC1 用来存放a通道。
iOS :RGBA PVRTC 4bits。

大小的计算

8 bits(位) = 1 bytes(字节,B)
1024 bytes = 1 KB
1024 KB = 1 MB
假如有一张 1024x1024 的纹理,用的 RGBA32,1像素占用4个字节,总共占用 1024 x 1024=1 MB,1M x 4 = 4M;假如是512x512,则为 256x1024=256 KB,256KB x 4 = 1M。其实就是 4M x 1/4 啦。

特殊的地方
  1. PVRTC 要求尺寸为2的N次幂,要正方形
  2. ETC1 要求尺寸为2的N次幂,宽高可不同
  3. ASTC 是更优的压缩格式,但是对设配有要求,需要舍弃老设备。

参考

【纹理优化(二)】纹理压缩格式
游戏图片纹理压缩相关总结
你所需要了解的几种纹理压缩格式原理
Unity 带 Alpha 图片手机包失真
Unity NGUI UI 在iOS端的锯齿、模糊、颗粒感问题

相关文章

实现Unity AssetBundle资源加载管理器 AssetBundle是实现资源...
Unity3D 使用LineRenderer绘制尾迹与虚线 1.添加LineRendere...
Unity 添加新建Lua脚本选项 最近学习Unity的XLua热更新框架的...
挂载脚本时文件名和类名的关联方式 写过Unity脚本的人应该都...
Unity单例基类的实现方式 游戏开发的过程中我们经常会将各种...
这篇文章主要介绍了Unity游戏开发中外观模式是什么意思,具有...