后来发现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