论如何对Unity游戏进行压缩

要了解如何压缩Unity,要从发现问题开始。

每次打包完之后,请通过一下方式查看Build结果:


Build Log

打开log文件,找到这里:


Size List

看到这里你可能会有疑问,例如我Android平台上面的Apk打包出来也就30多MB,这里怎么显示Complete Size 是94.2MB呢?一张图片8MB怎么可能?

png和jpg都是一种压缩格式,图片的真正模样是这样的:例如我有一张图,2 x 2的图,也就是说这张图有4个像素,每个像素都通过一个整数来表示颜色,这个整数可以8位,16位,32位,如果是8位的话这张图的大小最后就是2  x 2 x 8 = 32位 = 4个字节。而png和jpg只是对图片的一种压缩,unity资源并不压缩图片资源,它只认真正的图片大小,如果上面的2  x 2 x 8图片经过png压缩变成了1个字节,虽然你在电脑的文件夹看到的是1个字节,但是当unity build之后,不好意思这长图片就是4个字节,而且不管你使用什么压缩格式png啊jpg啊都没用,因为图片真正的样子就是四个字节。

那你又会问,好的这个我接受但是为什么unity变成90多MB之后变成apk又被压缩成30多MB了?

众所周知,Unity是跨平台的,因此Unity的资源(jpg,png等等)最后都会被打包成Unity资源,在安卓上面Unity资源存放在apk的Assets/bin/data里面,而apk本身就是一种压缩格式(具体是zip还是啥的我忘了),所以虽然unity资源把图片还原成4个字节但是apk又把它进行apk压缩了所以包体看起来没那么大。


assets可以直接当成Unity资源,95MB经过APK压缩变成了20MB

好了,说了这么多那我们怎么压缩包体?

想通过代码来减小体积肯定不可行,那么我们只能把注意力放到资源文件了。

上文讲到一个像素可以是8位,16位,32位,我们直接将图片的位数直接降低就行了,如果你之前一直使用32位或者truecolor,那么全部强制换成16位,Unity资源直接减少一半!


选择16 bits

不过提醒一下,画面质量会降低,但是不会很明显。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容