孙广东 2016.5.21
为什么我游戏包这么大?
为什么在我手机上的发热量这么严重?
为什么我的游戏加载时间如此之高?
如何减少我游戏包的大小?
有很多东西是我们可以关注的,让我们看到什么占用最大。要进行检查,首先我们需要打开Editor Log。
如果你不知道如何打开Editor Log访问以下链接 ︰
http://docs.unity3d.com/Manual/LogFiles.html
Unity的官方文档中描述:
"该日志提供 Assets 类别分列的摘要,然后列出所有的每个 Assets 占用大小的顺序。通常情况下,事情像纹理、 音效和视频会占用了大多数存储空间,而脚本、 场景和着色器往往可以忽略不计。"
这是清晰可见从下面的图片 ︰
此数据实际上是从一个2D 游戏截取的。如上所示,Textures/Graphics 占用了占用最大!
因此,GraphicsCompression(图形压缩 最应该重视)。
那么,什么是纹理压缩?
Wiki的定义是:
纹理压缩 是一种专为在三维计算机图形渲染系统中存储纹理而使用的图像压缩技术。与普通图像压缩算法的不同之处在于,纹理压缩算法为纹素的随机存取做了优化。https://zh.wikipedia.org/zh-cn/%E7%BA%B9%E7%90%86%E5%8E%8B%E7%BC%A9
基本上,这些硬件加速的格式帮助改善性能、 电池寿命和减少设备发热,同时还消耗更少的能源要求更少的带宽.
这个链接是关于 纹理压缩的更全面介绍:
http://renderingpipeline.com/2012/07/texture-compression/
但我应该使用哪种压缩?
这取决于在什么样的设备上。并不是所有的硬件压缩的格式都支持所有设备。
让我们首先看看表,不同的设备支持的格式。
有两种类别的硬件加速格式,即标准 和 专有。
以下是标准的格式 ︰
以下是专有的格式 ︰
让我们先看一个例子来更好地理解压缩 和 它如何进行的; 以UI 为 例子 ,如下图所示 ︰
主要看这个背景图像,选择背景图像将能够看到如下图所示 (在Inspectors面板上) 。 此大小是默认情况下 (无压缩设置为真彩色) ︰
这里的大小显示 8.0 mb。
Inspector面板显示设置如下图 ︰
开始吧:
现在设置纹理类型为Advanced。取消选择Generate MipMaps。选择Override forAndroid (这将允许自定义压缩) 并选择格式作为RGBA Compressed DXT5
现在再看一看下面的图片 ︰
图像大小从 8.0 mb 到了 2.0 mb。
现在在 试一试 ETC Compression 格式:
选择格式作为 RGBCompressed ETC 4 bits ︰