Director.EVENT_INIT没有回调

版本3.3.2
写法如下:

director.on(Director.EVENT_INIT, () => {
    console.log("XTween Director.EVENT_INIT");
    const sys = new XTweenSystem();
    director.registerSystem(XTweenSystem.ID, sys, System.Priority.MEDIUM);
});
console.log("XTween Director.on");

开发时,一切正常,打web-mobile后,事件没有回调。
image

是有回调的。只是执行的顺序问题。
做了一个简单的测试。

NewProject.zip (10.3 KB)

我也放在最外面了


但确实木有调用

这是上面NewProject.zip工程的输出,只不过我用3.4.2开的,确实没有 event_init

3.4.2版本引擎执行流程大体为:game.init(), game.run(), game.onStart();三个阶段;

Director.EVENT_INIT事件会在game.run()阶段派发;

game.onStart()阶段会去加载指定的启动Scene;

而项目中的Script都是直接或间接由当前加载的Scene驱动;

基于以上逻辑,项目代码不要依赖去监听Director.EVENT_INIT事件;确有需要可以自行修改引擎源代码;

注:Creater工程,我暂时没有发现有类似AppDelegate或者GameInstance的概念,使之可以有机会承接整个game的生命周期(包括引擎初始化);如果有谁知道有类似的功能,可以分享一下!

我发现,在红线之后,assets目录下的项目代码才开始运行。因此。往前面最多只能接到Game.EVENT_ENGINE_INITED这个事件(在不改引擎的状况下)。


我也想像楼主一样使用自定义的 System,并且交由director管理,以便于使用它的init和 update。而又避免在场景里面生成一个没有实际功能的Component。而且源码里面的 onPreSubsystemInitDelegate等等代理,我理解就是给用户直接接自己的system用的。我也不知道是不是我理解的偏差?

或者说,有否设置能让项目目录下的代码更早的运行?