未来版本的节点激活(active)和显示中间能否加入新的生命周期?

  • Creator 版本:3.8

先确认一下我对cocos节点激活和显示的先后次序的理解对不对:
image
如果确实是这样的,那么就会导致如果想在onLoad中控制自身节点的显示与否,就必须要先显示。
再说到具体的应用场景,我有一些新手引导的相关节点,想根据一个变量来控制显示与否,最方便的方法就是制作了FirstPlayTip组件,然后挂载在所有这些节点上,在onLoad中根据这个变量来控制自身节点显示与否(修改this.node.active):

// FirstPlayTip.ts
@ccclass("FirstPlayTip")
export class FirstPlayTip extends Component {
  protected onLoad(): void {
    this.node.active = isFirstPlay
  }
}

如果是这么写,就有可能造成该节点在画面上的闪动。
目前的解决方法是在父节点的onLoad中控制子节点的active。不过这种做法会导致需要新增很多的控制的相关代码,而我希望针对同一显示需求的节点,只要挂载同一个组件就可以统一进行显示的控制,例如我的所有首次游玩引导的节点都只要添加FirstPlayTip组件就能进行显示控制,后续这种节点需要删改时也不用再去修改父节点代码。

总结来说,我希望能像下图一样添加一个beforeShow生命周期来控制节点是否显示,或者添加新的显示属性,让节点的active属性和显示不是强关联的:
image
(如果这样调整,onLoad或许也需要换一下名字)

可以自己做这个能力,比如我的框架里面就给UI界面加入了beforeShow
https://forum.cocos.org/t/topic/153151

发现在onload中修改节点的active是不会造成节点闪动的,之前测试发生闪动是因为加了个异步操作来重新修改了active。
管理员看到的话可以直接删除该帖子了。