能讲讲设置active 实际干了哪些事吗?

设置为false的时候
js脚本里依旧能处理ui渲染,只是没显示? active = true的时候显示的都是处理过的状态
所以

  1. cocos在处理渲染的时候是把所有的ui全部序列化的,active = false的时候,依旧可以处理这些数据,只是不绘制。当变成true的时候才开始绘制?

  2. active = false的时候,是会销毁canvas里所有的渲染吗? toggle active值,开销大不大?

  3. activeInHierarchy 和 active的区别?

creator 中,渲染组件和普通组件地位是等价的,普通组件也是一等公民。
对于一个节点来说,active = false,会导致所有子节点极其组件的 update 停止调用,并且触发 onDisable 回调。

没显示不就是不处理渲染么?

渲染和序列化无关。active = false 时,依旧可以处理数据,只是不绘制

只是会切换渲染组件的 visible,开销不大

activeInHierarchy 只读,表示节点当前是否激活,这个属性会收到父节点的 active 影响,如果父节点的 active 为 false,则子节点的 activeInHierarchy 同样会是 false

1赞

node.active = true;
node.opacity = 0;
node会先显示出来然后再隐藏,有闪屏的感觉,请问怎么解决

active = true;为什么不是下一帧才处理一些事件并渲染

现在切换active 是不是已经不会重排序所有节点啦?

Cocos Creator 2.4.8
我也遇到了这问题,后来发现是节点上带有Widget组件的话,节点在active时会触发Widget的更新,在更新的过程中,会强制无视脚本对同一节点的赋值,把widget移除后就没事了,但后来再加一次Widget后,又没这问题了,真是神奇
后来调查应该是跟组件执行顺序有关