关于 无组件执行初始化函数的问题

非常感谢您在百忙之中观看此贴!

目的:我想在启动游戏后,运行一个初始化的函数。但是每一个场景都需要自己手动添加一个包含onLoad()的组件的游戏对象,可能会遗忘。
我希望场景中不含这个组件,但是在我启动游戏之后就会自动的调用一个初始化函数,或者是将这个组件new Node().addComponent()到场景中。

非常感谢您的阅读!

单独写一个脚本拖拽到你最先加载的场景下,设为常驻节点

3.0前 director.addPersistRootNode(myNode);
3.0后 game.addPersistRootNode(myNode);

1赞

非常感谢您的回复!~

有没有可能,首个加载的场景中也不添加组件的情况下做到?

下面这种情况是被允许的嘛?

(function(){
    //初始化函数
})()
@ccclass('CustomComponent')
export class CustomComponent extends Component{}

可以用事件,比常驻节点更方便

cc.Director.EVENT_AFTER_SCENE_LAUNCH

1赞

非常感谢您的回复!~

个人浅见,这种需求比较难做到。也许要对引擎内部代码作修改。传统的代码主循环main方法思维(引擎内部应该最终还是会调用到入口函数,cocoscreator只是把这种入口函数的功能分配到组件相关的生命周期函数)也许不太匹配node+components的脚本代码组织形式。我认为应该尽量寻求一种“去中心化”的思维去适应“节点+组件”这种代码组织方式。

1赞

非常感谢您的回复!~