关于unity ios包体太大的问题记录

今天在打包ios版本游戏时,发现包体太大的问题,我想将这个解决问题的过程记录下来,分享给可能遇到相同问题的人,让大家少走一些弯路,一起共同进步

1.问题描述

环境untiy5.51f,xcode9.3

打包安卓版本时,打出来的apk大小为150M,苹果版本时ipa为200M,解压出来为600M+,自从某一次版本后,appstore上面显示的包体大小为解压之后的大小,我们本身的定位为一个小游戏,这么大的包体大小是无法承受的

2.解决过程

先查看resource目录大小(小项目,资源全放在这里)可以看到整个目录也才170M,打包出来的大小可以看到为660M,解压包出来,发现Resources.Assets.resS这个文件占了很大的内存,该文件为resource目录打出来的资源,奇怪的是,打出来的包压缩资源后居然比在编辑器下的包更大,带着这个问题,我看了一遍打包时候的Edit.log,找到如下内容

发现Textrue在包体内占用的内存居然高达93%,我先查找了下相关资料,发现在不同平台下texture的处理方式是不一样的,安卓上面主要支持的是ect等格式,ios上支持PVRT格式,由此可以断定,IOS上包体太大的问题是因为在IOS平台下PVRT格式压缩的问题,于是随便找一张texture记录下在IOS平台上的大小为2.7M,导入texture选项为默认选项

苹果平台

安卓平台

这两个数据进一步验证了包体大小是因为Textrue的原因

通过查找资料和手动调整纹理导入选项,最后找到了问题,将Textrue导入选项中的尺寸为最近的二次幂时,纹理大小缩减到0.5M

 查了下相关资料,发现在纹理尺寸为二次幂时,图片压缩算法会有更好的效果,至此,包体大小问题得到解决,同时,大家可以根据Unity打出的Edit.log来针对性的优化包体大小

https://answers.unity.com/questions/215761/does-unity-care-is-a-texture-is-a-power-of-2.html

3.带来的问题与反思

3.1 拉伸后的纹理大小可能会跟之前的不一样,之前直接依赖原图大小的地方需要做一定的伸缩(该问题好解决)

3.2 ios图片的大小计算,拿上图2.7M计算,(1000*700*(32/8))/1024 = 2734.375k 约等于2.7M ,同理压缩后的大小为1024 * 1024 * (4/8) = 512K

4.不是很明白的点

压缩图片相关 

这是我第一次在博客园上写博客,很多表述不清楚,排版的问题可能做的不是很好,望大家谅解。因为我只是想记录下问题,方便大家一起进步,所以只想把东西说清楚就好了,也希望大家跟我分享你的思考,祝进步!

猜你喜欢

转载自www.cnblogs.com/ztisme/p/9132043.html