1.查看包体是由什么构成的
模拟打包APK一次,Unity会输出打包日志,点击Console右上角,选择"Open Editor Log"
Unloading 1780 unused Assets to reduce memory usage. Loaded Objects now: 3254. Total: 10.497625 ms (FindLiveObjects: 0.513485 ms CreateObjectMapping: 0.089958 ms MarkObjects: 8.822835 ms DeleteObjects: 1.070138 ms) Textures 173.0 mb 1.$% Meshes 0.0 kb -1.$% Animations 25.7 kb 1.$% Sounds 110.0 kb 1.$% Shaders 12.6 kb 1.$% Other Assets 2.7 mb 1.$% Levels 297.7 kb 1.$% Scripts 902.9 kb 1.$% Included DLLs 3.9 mb 1.$% File headers 17.4 mb 1.$% Complete size 0.0 kb -1.$% Used Assets and files from the Resources folder, sorted by uncompressed size: 2.6 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/purchase/purchase_style2_bg.jpg 2.6 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/purchase/purchase_style1_bg.jpg 2.6 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/style2_off_bg.jpg 2.6 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/purchase/new_purchase_bg.jpg 2.6 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/style1offbg.jpg 2.6 mb 1.$% Assets/Logo Quiz/Sprites/common/game_bg.png 2.6 mb 1.$% Assets/Logo Quiz/Sprites/Main/main_bg.jpg 2.2 mb 1.$% Assets/Logo Quiz/Sprites/Wikipedia/purchase_bg.png 2.1 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/get_bg.png 1.8 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/float_bg.png 1.8 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/purchase/fun_test_bg.png 1.8 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/lucky dialog/lucky_panel.png 1.8 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/lucky dialog/lucky_light.png 1.8 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/lucky dialog/lucky_spin.png 1.7 mb 1.$% Assets/Logo Quiz/Sprites/common/600.png 1.6 mb 1.$% Assets/Logo Quiz/Sprites/Sale/sale_popup_bg.png 1.4 mb 1.$% Assets/Logo Quiz/Scripts/Setting/popup_setting_bg.png 1.1 mb 1.$% Assets/Logo Quiz/Sprites/Dialog/lucky dialog/lucky_botton.png |
翻看日志文件,找到描述资源大小的位置,从大到小去做优化
2.根据Unity提供的信息,从大到小分析处理
1.压缩大图,由于压缩格式需要设置power of 2,设置之后图片会变成Texture因此只能使用RawImage来显示该图片资源
这种设置方式是针对背景大图,会影响图片质量。
如图,大图内的元素,建议分开,文字用text,图片用sprite(小图可打图集)
2.九宫格图缩小
九宫格图可以用四条线把自由拉伸区域表示出来,在Image上选择Sliced模式,美术在切图时可以把重复部分尽可能缩小,纯色背景图最小是4*4,否则不支持压缩格式
3.打图集,SpritePacker
在Packing Tag上标记图集名,Unity会根据这个tag来把sprite合并在一个图集上(power of 2),注意要选择好压缩格式。有部分sprite是不透明的,会被单独达成一个group,如果想合并在一起,需手动调节图片格式到RGBA支持Alpha通道。点击Window/Sprite Packer查看图集分配情况,打开窗口后,需要点击Pack来生成图集
Unity的Packer会把图片资源的留白自动去除
在界面比较多的项目中,需要制定的标准,如公共图集,物品图集。打图集更大的目的是减少drawcall,图集最大支持 <strong>2048*2048 </strong>4M的大小,图片也需要有命名规则,防止重复资源,没有用到或者已经过时弃用的图片一定要去除,防止打进图集,增加累赘
4.Resources文件夹下的图片SpritePacker无效,故采用Power of 2压缩方式
后面这种方式需要减少使用,解决方法有很多种,最简单也比较适合我们的一个方法是,图片不存放在Resources文件夹下,Resources下存放的是引用了改图片的Prefab,在动态使用该图时,加载出Prefab后,把图片引用取出。
3.根据项目需要制作相应的工具
1.(鼠标右键)Find/Find References,资源引用查找
2.(鼠标右键)Bulid UI/把图片的属性设置成Unity能用的Sprite,自动设置格式,自动打Packing Tag
3.(鼠标右键)Bulid UI/把图片的属性设置成Unity能用的RawImage,自动设置成Power of 2格式
4.(菜单栏)GameObject Tools/Image2RawImage,自动把选中GameObject上的Image组件改成RawImage,并把图片设置成Texture格式