creator2.4.3 不同层级的组件,start()的执行顺序是怎样的?

本以为是先由上到下,先父节点后子节点,结果测试了下,顺序是乱的

请问下这个执行顺序是按什么来执行的?

https://docs.cocos.com/creator/manual/zh/scripting/execution-order.html?h=生命周期

比如从上往下依次是A\B\C三个节点,默认脚本的start()是按照A\B\C的顺序执行

如果在A的start里面,设置 A的active为false,则会影响后面层级start的执行顺序,
此时顺序会变成 A\C\B.
就是说,上一个层级组件在start()时候的active变化会影响到下面层级的start()的执行顺序

不知道是为啥?

这还真没去试过 :smile: 个人感觉没必要深究~ 能解决问题的代码就是好代码

哈哈,我也是有bug了,才去试了下
总结下就是:节点的隐藏最好统一由一个入口来处理,私自在start()里隐藏会有造成不必要的问题。

根本问题不是执行顺序的问题吗~~

默认它是由上往下的顺序,但你如果在上层的某个脚本的start()里active设为false,后面的执行顺序就会乱掉,所以为了保持有序,就最好由一个入口来处理,这个处理的脚本肯定是在最下层。

节点层级是以下哪一种?
A
-B
-C

A
B
C

A
-B
–C

都包括在内。
从上往下,先父后子

比较麻烦,业务逻辑还是不要依赖于组件的生命周期吧。
看了一下creator2.0.9的源代码,没发现什么问题,可能楼主是别的原因造成的。

可能你需要的是怎么控制组件的先后顺序 @executionOrder(-1) 优先级小于 0 的组件将会优先执行

请用executionOrder来设置。
2.1.3我试了,文档说挂载在上面的先执行,实际不是这样的。start顺序是乱的,update是正常的。