有没有水友交流下 控制脚本执行顺序

文档也有提到脚本执行顺序

但是里面总脚本一定要挂在一个控件里面吗? 直接运行一个脚本 然后控制其他脚本的执行其他的脚本

比如 有个总脚本 -》开始初始化核心脚本(创建 系统管理器,实体管理器,窗口管理器 。。。等系统实例并初始化)-》开始加载游戏内容(地图,人物。。。)-》开始执行逻辑(update) 这样的一个脚本顺序

总脚本不应该挂靠在控件里 因为(控件还没开始创建)

哪这个总脚本放在哪里呢 又从哪里开始调用他?

参考lua 会有个main文件 作为lua的入口 直接可以在main里面挂这个总脚本

选择一个场景可以开始运行 这个总脚本应该是在运行场景前就执行才对 但是我不知道这个入口在js那哪里

有没有大佬可以可以提供下解决方案呢?

mian.js
看官方文档吧

没有这个文件 是那个文档

是要构建出来window项目才有吗?

总脚本在canvas外创建一颗空对象挂载。想要在前面执行,设置executionOrder<0

文档遗漏了楼上说的 executionOrder API,稍后我会补充。
http://docs.cocos.com/creator/api/zh/modules/cc.html?h=executionorder

这个方案就是官方文档上提供的挂在一个对象下

但是这个方式存在好几个问题
1、总脚本依赖一个对象的存在,对象又是依赖一个场景的存在,一旦切换场景,总脚本就会被销毁。
2、如果要总脚本一直都存在,那必须在每一个场景都要有一个对象来挂载,但这是不合理的。因为总脚本控制的是整游戏的进程,应该是在游戏启动时只创建一次,并初始化和驱动一些核心脚本(例如js层的事件系统,窗口系统等等),这些高级别的对象应该也是只需要创建一次,贯穿整个游戏流程。如果每次切场景都去创建驱动,大游戏这销毁就不小了。
3、当前场景下其他对象如果挂靠了脚本,这个脚本的执行依然是不可控的,因此它是的驱动走的是Component的流程和生命周期

如果是在构建后的main.js 里面来挂总脚本 构建window后js代码都合一起了,要在main入口加入总脚本控制,就是要在构建后加入,编辑器里面创建脚本有怎么会被控制?难道是要全部脚本都必须在构建后创建并自行绑定到对象,再去控制?这样编辑器就没办法挂脚本到对象去,只能做prefab 场景 动画那些资源类型的东西了

你可以用 cc.game.addPersistRootNode 来防止被场景销毁

通过 launch 场景启动游戏,总脚本挂在 launch 场景中,只会创建一次

1赞

索噶,我晚点研究下,弄好分享下。谢谢指点:grinning:

不知道你这里的总脚本是个什么,如果是一些全局,通用的工具,那就申明全局单例好了,这就和写普通的js一样,不用挂节点上,既不用挂节点上,也不用写在main.js里,还会在场景运行前执行

感觉更乱了
executionOrder 我可以看源码知道是怎么样的

1.但是IDE里面直接拖拽这个component在同Node中的顺序,和这个executionOrder哪个更优先?
2.文档中表示"如果以上方法还是不能提供所需的控制粒度",可是我没发现,这个的粒度哪里更小了?

cc.game.addPersistRootNode
这种API建议在文档里体现出来,因为写多了ecs的,肯定是需要知道system like在cocos里是怎么写的