instantiate 卡顿严重_MeshBake——极大减少UI的Instantiate耗时

后来发现Mesh不能序列化,转换为向量数组后。然后再调了实机,将Loading的总时间调出来看了,结果如下:正常界面MeshBake

也就是负优化。

Loading.ReadObject变慢的原因是,将Mesh存入Prefab后导致Prefab变大,所以解析Prefab的序列化时间变长了。

Instantiate变慢的原因是。在执行Awake前,它需要先Copy。

最后把生成网格阶段节约下的时间都给浪费了。

不能保存Mesh只能存向量数组多出来的转换时间倒不多,本来速度还有至少2倍的优势的……

不过,Instantiate的Copy部分的消耗倒是可以将网格存成单独的文件类来回避。

所以,我后来又把生成的Mesh都单独放在了另一个自定义Asset文件里(不能把Graphic也传了,否则它指向的不是Instantiate之后的Grpahic),搞的很麻烦。编辑器里能运行,但是打包后显示:A script behaviour (script unknown or not yet loaded) has a different serialization layout when loading.这样的迷之错误,google了也有其他人问但没有任何解答,或者这就是Unity的序列化被人称作“没法用”的原因。

考虑到即使做好了也不会有多少改观,很可能还是负优化,所以就放弃了。

最后的源文件:

虽然这方法失败了,还是给点这个过程中得出的结论吧:

1.UI界面事先用异步的方式后台加载,然后显示时再执行In

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值