- Creator 版本:3.8
先确认一下我对cocos节点激活和显示的先后次序的理解对不对:
如果确实是这样的,那么就会导致如果想在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
属性和显示不是强关联的:
(如果这样调整,onLoad
或许也需要换一下名字)