Cocos Creator默认脚本加载顺序可以更改吗?

例如:工程下有两个配置文件(非组件)A.ts和B.ts,其中B.ts用到了A.ts的配置,这时候Cocos Creator优先加载了B.ts,导致报错说引用到A.ts的参数没有初始化。请问可以手动调节脚本加载顺序吗?或者其它解决方案(不希望在B.ts中手动引用A.ts,原因是假设有C.ts的存在,那不是C.ts也要手动引用一下A.ts?作为开发人员我知道某些配置(全局配置)必须优先初始化,所以我希望在一个地方提前初始化它们)

可以改,文档里有写。3.x里面是在class前面加一个@xxxxx(number) 忘了叫什么
类似@ccclass()

还可以这么操作

https://docs.cocos.com/creator/api/zh/modules/_decorator.html#executionorder

你说的那个是组件初始化顺序

我说的是非挂载的脚本

A.ts

export const A = {
   xxxConfig : false
} 

B.ts

class B {
   init() {
      console.log(A.xxxConfig)
   }
}

A.ts

interface A = {
   xxxConfig : false
} 

B.ts

class B implements A  {
   init() {
        //TODO
   }
}

这样的有办法吗?

我没懂你想表达的意思,或者没懂我想表达的意思

我想要的是加载ts脚本的顺序可控

“纠结脚本先后顺序只会让逻辑流程复杂且难以维护”,这话有点不认同,编码肯定是可控且按固定规则运行,而不是随机或者我根本不知道你想干什么

我这里就是想知道CocosCreator在加载脚本时时序怎么处理的,我能通过什么方式影响这个时序(不一定是改变规则,按照引擎规则也行)

按文件名排序,a.ts和b.ts在同一个文件目录下的时候,并且没有 import 时,a 的脚本先加载,b 的后加载,如果你在 a 里面 import 了 b(还要有使用),就是先加载 b,再加载 a,
你可以去测试啊,a 文件直接console.log(‘a’); b 文件直接console.log(‘b’);

这个我早就知道了(当然是js版本,也就是2.x的时候)creator可以控制Script初始化顺序吗?

不过现在改成ts,用起来没那么随意,搞得蒙了(我非CocosCreator开发人员,业余稍微学习)

回到问题本身,确实是“文件路径排序”顺序调用,只是“现在ts的import”和“以前js的require”不一样了(不知道有没有记错,有点忘记了),现在ts的import编译后必定优先执行不管你放在当前脚本的任何位置,以前js的require是运行到哪里时才执行

谢谢大佬@17633978421 的提醒,多思考后问题已经清晰了,谢谢

做个总结

CocosCreator加载脚本顺序按“文件路径”升序排序执行(再根据实际脚本引用调整加载顺序)

ts编译成js后其中的import会语句放在最前面执行(翻译成什么样可以在web调试的时候查看路径在http:localhost下编译好的对应名称的js文件)

如果有代码放在import前面是不会优于import先执行

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。