http://www.taikr.com/article/2630

  减包瘦身是个精细活。本文整理了0907版本操作过程,以备日后参考。
  经过一番折腾,各位攻城狮的努力,美术设计师的支持,策划爷的理解,UI资源(图集、字体、单局外模型贴图)从45.4MB减少到24.5MB。如下表所示。

  下文看图说话。实操中针对同一个资源,可组合应用多个压缩选项。文中所指【图集Atlas】是多个小图片的合集,【Texture】是单张图片,大小指的都是打包前的资源大小。
   
  1、删除无效的、废弃的资源
  理由是显然的,无效的、废弃的资源就应该移除项目工程之外。确认是否废弃资源可以通过以下几个方面考量:
  Texture:(1)在prefab中搜索texture.png.meta文件的guid,确认是否被引用;(2)在C#代码中搜索文件名,确认是否被动态指定。
  图集Atlas:(1)在prefab中搜索atlas.prefab.meta文件的guid,确认是否被引用。
  图集Atlas的单个图片:(1)在prefab中搜索图片文件名,确认是否被直接引用;(2)在C#代码中搜索图片完整或局部文件名,确认是否被动态指定。
   
  2、取消图集Atlas的正方形限制
  工程项目中提供了图集制作工具(HDAtlasMaker),默认是生成正方形图集Atlas。然而此举很浪费,因为若限制图集为正方形,很多时候图集大部分区域是空白。事实上应取消正方形限制。
  例子(无损):宽*高:2048*2048(16M) => 1024*2048(8M)
  适用场合:去掉正方形限制后可缩减一个尺寸的Atlas。

  3、使用TexturePackerGUI打包,勾选Trim属性去除透明边界
  例子(无损):宽*高:512*1024(2M) => 512*512(1M)
  适用场合:去掉透明边界后可缩减一个尺寸的Atlas。

  

  使用TexturePackerGUI工具制作图集时,可以预览图集效果。勾选Trim属性的实质是,图集打包时设置Padding属性代替透明边界。

  4、调整Texture初始默认导入设置
  Texture的默认导入设置包含Mip Maps。然而Mip Maps是为了物体在视野远近不同而生成不同分辨率的纹理。而UI贴图不需要考虑远近,无需生成小纹理。所以应将Texture导入设置改用Advanced,并取消Generate Mip Maps。
  无损:1.3M => 1.0M
  适用场合:默认导入设置为Texture的全部UI图片资源。

  5、调整Texture导入设置(Advanced:无Alpha透明通道)
  (1) 无损:RGBA 32 Bits(2.3MB) => RGB 24 Bits(1.7MB)
  适用场合:无Alpha透明通道的单个图片,如登陆背景、通用背景。

  (2)有损:RGB 24 Bits(1.7MB) => RGB ETC 4Bits(256KB)
  此项压缩有损画质,然而压缩效果却很明显。注意ETC需设置资源宽高为2幂次方。实际尺寸非2幂次方时,将以伸缩处理。
  适用场合:无Alpha透明通道,且画质要求较低的单个图片,如:结算背景、领奖背景、通用背景、Loading图、3D模型贴图等。

  (3) 有损:RGB ETC 4Bits & Max 1024(256KB) => RGB ETC 4Bits & Max 512(64KB)
  在(2)的基础上,此处设置宽高最大512,当实际尺寸超过512时将拉伸到实际尺寸,会进一步模糊画质。此处512也可根据实际情况选用256、128、64、32等。
  适用场合:同(2),无Alpha透明通道,且画质要求更低的单个图片。

  6、调整Texture导入设置(Advanced:有Alpha透明通道)
  (1)  有损:RGBA 32 Bits(1.1MB) => RGBA 16 Bits(0.5MB)
  适用场合:有Alpha透明通道,且画质要求较低的单个图片。

  (2) 有损:RGBA 16 Bits & Max 1024(0.5MB) => RGBA 16 Bits & Max 512(360KB)
  适用场合:同(2),有Alpha透明通道,且画质要求更低的单个图片。画质在(2)的基础上进一步模糊。

  7、Texture从Atlas分离出来
  例子(几乎无损):宽高:512*512(1M) => 256*512(0.5M)+ RGBA 16Bits(50KB)
  适用场合:分离出尺寸最大的单个图片后,剩下小图片生成的图集Atlas能缩小一个尺寸。

  8、去掉边缘发光
  例子(几乎无损):宽高:640*326(0.8M) => 234*126(115KB)
  适用场合:边缘发光去掉后对画质不影响或影响甚微的单个图片。

  9、去掉边缘装饰
  例子(几乎无损):宽高:585*141(322KB) => 510*79(157KB)
  适用场合:边缘装饰去掉后对画质不影响或影响甚微的单个图片。

  10、整合图集Atlas
  例子(几乎无损):两个256*512(0.5M*2) => 一个256*512(0.5M)+若干独立小图
  适用场合:图集小图片有交集,所属模块类似,且都有剩余空间,放一起刚刚好。

  11、重新裁切透明边框尺寸(Atlas)
  例子(几乎无损):512*512(0.5M) => 512*256(256KB)
  适用场合: NGUI Font。由于UI Font不能直接Trim,需处理原始资源,切掉透明边框。

  12、重新裁切透明边框尺寸(Texture)
  例子(无损):640*499(0.6M) => 640*450(0.5M)
  适用场景:有透明边框的Texture。由于Texture不能直接Trim,需处理原始资源,切掉透明边框。

  13、缩小资源原始尺寸(Atlas)
  例子(有损):宽*高:1024*2048(8M) => 1024*1024(4M)
  适用场景:图集Atlas空白太多,且图集元素能接受小范围的画质模糊。
  将小图片缩小80%,重新制作图集,实际应用UISprite时再通过代码恢复125%回到原始尺寸。

  14、缩小资源原始尺寸(Texture)
  例子(有损):宽*高:577*1024(1.7M)vs 480*852(1.2M)vs 288*512(432KB)
  适用场景:登陆界面背景原始尺寸640*1136。
  若直接导入原尺寸,则资源较大(2.1M)。
  若按Max 1024导入也不小(1.7M)。
  若按Max 512导入则只需432KB,然而此图为重要门面背景,画质不能忍。又因为导入设置不支持512~1024的中间尺寸,唯有手动缩小原始尺寸到合适尺寸和画质,比如此处中间版本【原图66.6% = 480*852(1.2M)】。

  15、调整策划需求
  例子(无损):640*630(1.2M) => 32*32(3KB)
  适用场景:特定需求,特定应用场景。
  项目中的具体需求是,特定时间区间内显示运营Loading图,其他时间显示默认Loading图。这里可以让运营策划调整该特定时间区间,使之包含整个测试期间,那么默认Loading图就无需显示,其导入尺寸可缩小到最小。此处不直接删除默认Loading图是为了避免逻辑出错,且方便日后恢复。

  16、统一背景资源
  例子:背景大图。
  背景大图等资源应尽量复用。以下曾经出现过的几个背景图差异微小,经商讨后,最终统一用第三个,删除另外两个。

  17、缩减关键图集Atlas尺寸
  例子:Common图集Atlas把ABCS品质独立出来,剩下打包更小尺寸的Atlas。关键图集出现概率很高,此处缩减操作是为内存考虑。

  18、分析构建日志
  例子:分析C:\Users\[你的用户名]\AppData\Local\Unity\Editor\Editor.log当中的构建日志部分,查看打包资源列表,发现:
  (1)NGUI样例图集被打包进去了。

  搜索发现并无被直接引用,而是间接引用。为防止出错不直接删除,而是将Max Size调整到很小。

  (2)发现了重复图集。

  (3)宠物图集占用5.3MB,而不是4.0MB,经检查发现导入设置有误,生成了Mip Maps。类似的大图集有好几个,逐一检查处理。

  (4)新手引导和头像集合这两个图集很大,进一步将重点优化。

  

摆脱臃肿--Unity3D安卓包减肥秘笈相关推荐

  1. cad放大_CAD制图初学入门常见问题秘笈,助你摆脱节后综合症!(上)

    长假过后没精神,一打开CAD软件,就心慌!节后综合症?赶紧看看这份CAD制图初学入门常见问题秘笈,恢复状态,高效开工,真香!下面和小编一起来看看这些CAD制图初学入门常见问题解答吧! 1.如何批量转换 ...

  2. CAD制图初学入门常见问题秘笈,助你摆脱节后综合症!(上)

    长假过后没精神,一打开CAD软件,就心慌!节后综合症?赶紧看看这份CAD制图初学入门常见问题秘笈,恢复状态,高效开工,真香!下面和小编一起来看看这些CAD制图初学入门常见问题解答吧! 1.如何批量转换 ...

  3. CAD制图初学入门常见问题秘笈,助你摆脱节后综合症!(下)

    长假过后没精神,一打开CAD软件,就心慌!节后综合症?赶紧看看这份CAD制图初学入门常见问题秘笈,恢复状态,高效开工,真香!下面继续和小编一起来看看这些CAD制图初学入门常见问题解答吧! 11.如何定 ...

  4. Kotlin入门(15)独门秘笈之特殊类

    上一篇文章介绍了Kotlin的几种开放性修饰符,以及如何从基类派生出子类,其中提到了被abstract修饰的抽象类.除了与Java共有的抽象类,Kotlin还新增了好几种特殊类,这些特殊类分别适应不同 ...

  5. 【今日荐文】一本开源的程序员快速成长秘笈---康德胜

    写在前面 前几天和 PPMoney 万惠集团董事长宝叔以及几个合作伙伴一起吃饭,席间宝叔戏言引用一个段子来描述个人成长:读万卷书不如行万里路,行万里路不如阅人无数,阅人无数不如名师指路,名师指路不如自 ...

  6. 一个女中医写的女人保养秘笈

    一个女中医写的女人保养秘笈  1.如果你问"怎么我的头发那么油啊?",那是因为你肝火太旺了,身体里内脏不能消化油脂,所以就把它排到脸上和头上了",你还是会问," ...

  7. 《Clojure数据分析秘笈》——1.6节从JDBC数据库读取数据

    本节书摘来自华章社区<Clojure数据分析秘笈>一书中的第1章,第1.6节从JDBC数据库读取数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区"华章社 ...

  8. 《黑客秘笈——渗透测试实用指南(第2版)》目录—导读

    版权 黑客秘笈--渗透测试实用指南(第2版) • 著 [美] Peter Kim 译 孙 勇 责任编辑 傅道坤 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 3 ...

  9. 2 数据源配置_如何在程序运行中动态切换数据源?架构师必读秘笈

    说起动态数据源,大家应该也不陌生.例如在读写分离系统中,则要对请求中的读写操作进行分离,让读和写落在不同的数据库上:例如在多租户系统中,则要根据请求来源租户的不同,让其落在不同租户的数据库上:例如在分 ...

最新文章

  1. SQL text字段的替换处理(无法批量更新,写法记录)
  2. 多核处理器_手机处理器性能排行:骁龙865第四,麒麟9000拿下第二
  3. C++中变量可以在需要时定义
  4. g标签 怎么设置svg_SVG(可缩放矢量图形)图片添加、高斯模糊、渐变与g标签
  5. java光标修订_如何在java中更改鼠标光标?
  6. angularjs 验证用户名是否重复
  7. CVS的几个学习小站及配置说明
  8. python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)
  9. 【补】day3 table标签
  10. Unity3D GUI笔记
  11. 介绍计算机发明人香农,美国著名数学家香农简介:信息论的创始人
  12. R语言 最新TwoSampleMR、MRInstruments包安装教程
  13. photoshop智能参考线
  14. 用C语言编辑一光年相当于多少米,一光年到底有多远?是光速跑了365天的距离,这样说你就少算了...
  15. 解决Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS问题
  16. 《Long Short-Term Memory》翻译,Sepp Hochreiter, ¨urgen Schmidhuber.1997,9(8):1735-1780
  17. 再议IIC协议与设计【3】 --SCCB总线介绍
  18. SpringBoot搭建SSM框架项目,支持JSP页面
  19. 【verge3D】为web3D开启陀螺仪功能
  20. 1部手机批量管理上百个Tiktok,Tinder,Facebook,Line等账号

热门文章

  1. 【Spring第二篇】IOC:控制反转
  2. 洛谷——P1614 爱与愁的心痛
  3. 实验3-5 查询水果价格 (15 分)
  4. mfc之解决vs2010调试监视器(MSVSMON.EXE)未能启动的问题
  5. MySQL基本介绍(一)
  6. ubuntu复制文件到另一个文件夹_Excel VBA之FSO-2.2文件夹的复制
  7. Windows 下的坐标系
  8. 关于Python常见功能使用的博客收藏
  9. 微服务架构下的轻量级定时任务解决方案
  10. 解密Angular WebWorker Renderer (二)