您当前的位置: 首页 >  unity

染指流年灬

暂无认证

  • 3浏览

    0关注

    194博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity WebGL 浏览器减少内存和容量 并且能够正常显示材质的终极办法

染指流年灬 发布时间:2019-07-09 10:46:49 ,浏览量:3

这些天尝试了很多网上的资料去减少内存和容量,但是结果都是比较轻微。 不管项目里面怎么删减大图片 和 放到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版应该都还会出这个问题 所有有和我差不多任务的同学可以仔细参考我这篇博文

关注
打赏
1665909078
查看更多评论
立即登录/注册

微信扫码登录

0.0380s