一.空场景(默认设置): (21.1MB)
1.1 修改Api Compatibility Level : .NET 2.0 (22MB)
推荐使用.NET 2.0 Subset 表示你只会使用到部分的.NET 2.0Subset,不需要Unity将 全部.NET的Api包含进去。
1.2 修改Device Filter:ARMv7 (11.4MB) 推荐使用
Device Filter:选择应用程序在指定CPU上运行
当前Unity的默认配置FAT(ARMv7+x86),代表支持ARM架构和x86架构的CPU,如 果选择ARMv7,在当前的版本下apk包体可以减少8M。
那么问题来了,x86架构的用户到底有多少?
数据来自于:http://hwstats.unity3d.com/mobile/cpu.html
可以看到在2016-09月的时候,x86的用户只有1.3%。对于绝大多数用户来说,Device Filter选择ARMv7可以减少.apk包体的大小,同时又不 会影响绝大多数用户的 使用。
如何妥善的满足两种需求?
虽然只有1.3%的用户,而且大多集中在ZenPhone,ZenPad用户身上,然后用户就是上 帝啊,我们不能放弃他们。
可以选择发布不同的.apk版本,经由平台判断用户使用的机型,进而下载对应的.apk版本。举个栗子,Google Play对于不同版本的apk支持细 则:https://developer.android.com/google/play/publishing/multiple-apks.html?hl=es
二. Vuforia AR场景(空):
Api Compatibility Level :.NET 2.0 Subset
Device Filter:ARMv7 (26MB)
2.1 删除 Assets/Editor/Vuforia/ImageTargetTextures/VuforiaMars_Images/下图片 (25.9MB)
三 . 实际场景压缩APK包大小优化:
3.1 根据查看Editor.log查看打包内容,其中有些场景中未用到的资源可以删除
查看方法:点击Console窗口选项-->Open Editor Log-->查看Bulid Roport
内容如下所示:(注:只有至少打包一次之后才会有这些信息)
3.2 图集打包
游戏中最占用内存的就是图片,而对图片处理的最常用的方式就是SpritePacker也就是图集
打包(我们项目使用的是UGUI),具体使用方法参考:
http://blog.csdn.net/liang_704959721/article/details/77986038
3.3 对图片进行处理
Inspector面板中可以对图片的进行一些压缩,在不影响项目质量的情况下可以使用:
安卓的一般是设置图片压缩为ETC(不带Alpha)、ETC2(带Alpha)
IOS的采用的是:PVRTC图片格式
Format各种格式数据可参考官方文档:https://docs.unity3d.com/ScriptReference/TextureFormat.html
3.4 剔除不必要的资源
3.5 优化,压缩网格和动画,减小文件大小
3.6 使用AssetBundle进行资源的打包,AssetBundle是Unity引擎提供的—种用于存储资源的文件格式 ,它 可以存储任意一种Unity引擎能够识别的资源 ,例如模型 、纹理 、音频 、动画片段甚至整个场景等 。具体使用方法请参考:http://blog.csdn.net/u011484013/article/details/51253920
3.7 音效加载的优化
针对安卓平台,如果一开始就将音效给加载进去的话,那么上图中的内存占用率就会很大:
导致最为明显的变化就是,场景加载的时候卡顿严重,影响游戏的体验
优化方案:对于背景音乐(高频音乐)设置加载模式为streaming模式,使用缓存加载,播放完毕后会自动从缓存中卸载,从而提高内存占用率,如果你发现的的音效很占内存那么试试这个操作肯定不错。