这些天尝试了很多网上的资料去减少内存和容量,但是结果都是比较轻微。 不管项目里面怎么删减大图片 和 放到ab包 打出来的包都有70多M 这对于一个放到网页端的程序是不能容忍的 所以非常伤脑筋 后来我自己被逼想了个办法,将原项目已经优化好的Asset放到一个新的项目 打出来的包在能运行的情况下 出奇的减少到了7M 但是这个包有个不好的地方就是识别不了AutoDesk Interactive的shader 后来再把原项目的ProjectSetting复制过去之后 大小又出奇的变成了77M
后来我一个个去试 将设置调节成 原项目的一样 后来发现是 在Edit -> Graphics Setting -> always include 这里加上了一些shader之后 打出来的包的大小就明显出现了变大 加了三个shader 一下子从7M变成22M 这个方法我后来大概感觉是一个shader如果比较大,像Standard或者 AutodeskInteractive,可能有若干个multi compile关键字,这时出包时他可能有很多变体,有2的关键字个数个变体,之前公司项目有个自研shader出来2000多万个变体,导致出的包体很大。 所以容量大小和always include shader有关系 这里占量大的当属Autodesk Interactive和Standard了 因为这两个是复合shader 里面的代码都有几万几十万行。 最后要说的一句是 这里为了能够显示AutoDesk Interactive的shader 不需要将一些必要的shader 加入到always include这里 因为这样打出来的包会非常大。 要做的只是 在Resources文件夹里面 新建个材质 shader调成需要的shader比如AutoDesk Interactive 然后Normal Albedo Roughness贴图这些可以放可以不放 一般认为不放会影响打出来的包的大小和显示效果 可以参考这篇文章的最后两段话 https://docs.unity3d.com/Manual/MaterialsAccessingViaScript.html
这个做法其实很多文章也是有说过 只是那时自己不以为意。
目前发现另外一个会使项目出包变大的选项勾选红框里面这个 ps.打出来的webgl包的内存大小和这个 always include shader关系也是非常大 同样的程序过程,在always include shader没有添加AutoDesk Interactive的时候 运存才400M 添加了之后 运存达到了1G
ps2. 这个always include shader添加AutoDesk Interactive之后 法线贴图也会显示不正常, 导致webgl包的模型显得很诡异
ps3.unity版本2018.3.0f2后续版本我猜到2020版应该都还会出这个问题 所有有和我差不多任务的同学可以仔细参考我这篇博文