Unity3D如何减少安装包大小但不损耗图片质量

发表于2016-08-12
评论2 3.6k浏览

         在项目实践中,往往需要显示一些大图片,比如登录背景、转场Loading背景、广告图等等满屏图片,一方面希望使用真彩色无损导入,保留图片的原汁原味;另一方面又希望使用压缩比率高的ETC/PVRTC导入,减少包大小。

         比如底下这9个图:

 

         

         分别采用真彩色RGBA 32bit/RGB 24bitETC 4bit压缩格式导入:

 

===

         打包后大小如下(test_before.apk是导入9个图片之前打的包):

         

         ETC4打包后增加大概就是这9个图片自身大小总和(1.11MB),而RGBA32/RGB24打包后则增加了约4MB,比ETC4多了不少(3MB

 

         有一个思路可以解决上面问题:

   bytes方式读取图片资源,然后动态解码,再绑定到对应UI上面。

         注意资源文件(*png/*.jpg)手动更改后缀即可(*.bytes),无需任何实际的格式转换,否则TextAsset.bytes取不出来内容。

         关键代码如下:

         采用bytes加载方式导入,优缺点如下:

         优点:

         1)保留真彩色,原汁原味;

         2)支持压缩,且压缩率由美术把控;

         缺点:

         1)加载和解码bytes消耗额外CPU

         2)需申请额外临时内存。

   3)适用于动态绑定的图片。若是静态绑定则需要增加额外代码修改为动态绑定。

 

         打包结果对比:

         

 

         从上对比可发现,采用bytes打包后的大小几乎和ETC4一样小,但却保留了RGBA 32bit/RGB 24bit的原汁原味

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引