解读 Cocos Creator 引擎:让实例化快 50% 的原理,“拖节点”性能会更好吗?

麻麻麻MMM克

大佬给力!受益良多!!!

讲的很详细,感谢分享

那么有没有可能,让cocos在构建的时候,直接把perfab解析成jit的实例化函数.让构建的时间多花点.游戏运行的时候,就每一次都是最快的实例化了.@jare

3赞

序列化与反序列化是不可避免的,jit优化把多次序列化过程优化成了1次。

就是构建的时候,能不能首次jit反序列化的"生成构造函数"给完成了.

预制体还不快? 我全部预加载了 创建都是秒开 首次预制体创建慢不是因为请求资源占用网络时间导致的?

会影响包体,特别是小游戏上 js 不能远程加载,只能放到子包,调用起来也很麻烦。

mark!!!!!!!!

感谢,学到了

赞,果然是黑科技,思路大开

辛苦了。
mark一下。

mark。

mark.

拖节点好处,性能其实不是最主要的。
脚本关心的节点和组件是‘逻辑’相关的,和‘渲染’的层级结构经常是不相干的。
如果用 getChild,由于样式变化修改了层级结构,那么你得立马去改代码,如果没改,通常也只会在运行的时候报错,增加错误率。用 cc.find 能解决这个问题,但牺牲了更多效率,并且不同层级的同名节点问题也是个隐患。
而拖节点,脚本把自己关心的节点声明出来,节点的名字,节点的层级都不会导致脚本的修改,出现了误删节点,编辑器也会马上报错,减少错误率。
如果你引用了本节点之外的其他节点,那么就不能拖成预制,而 getChild 就可以,但显然这么做会出bug。
这也就是,引用关系的显式化,“显式优于隐式”,让错误暴露得越早越好

3赞

看的不是很懂,顶一个,有空在来看几遍。

太厉害了,顶一下