ts脚本文件加载运行顺序是否可控呢? 比如想执行初始化流程

我想了解一下ts文件的执行顺序是否可控呢
这里的运行顺序是指 ts文件 的加载顺序, 而不是 Component 中 onload start 这些函数的执行顺序
这个问题我搜到一些类似提问,回答一般是 没有必要关心脚本的加载顺序

但我觉得 是否有办法确保第一个脚本作为游戏运行入口 还是有用的

比如想做命名混淆,可能会改变模块的名字,这会影响模块加载顺序,会发生混淆后加载顺序变了 运行会 出现一些错误无法提前发现

或者将一些重要的工具类提前写全局变量避免循环依赖. 虽然推荐 模块设计上要完全独立不要相互依赖来避免循环依赖. 但这可能会使一些模块有较多重复代码逻辑 或者 要从模块中拆出一些逻辑写入到公共模块中 . 这些设计规范对团队和大项目可能便于维护 ,但 对个人做游戏来说似乎不太方便,毕竟自己写的游戏代码模块大概率不会提供给其他游戏共用, 各模块重复逻辑 会让 修改时需要改多处, 抽离公共模块解耦会让公共模块代码越来越多 查找函数写在哪里也不太方便 . 写入全局能避免这些问题, 但可能需要保证 脚本加载顺序 确保一些重要的工具类提前写入全局了

目前搜到一些说法是 2.x 是根据文件命名决定运行顺序的 ,比如 a.ts 一定会在 b.ts 前加载 ,3.x 似乎是没有办法
也有 说 定制构建模版 的,看了文档说明 似乎 一些平台不支持 定制

所以想了解一下这个是否有什么好的办法呢?还是说确实没有办法能确保文件的加载顺序,只能平时自己写代码时尽量留意 避免 新开发的内容可能导致 加载 顺序改变 影响游戏运行呢?

  • 你初始化,main.ts 中自己设置吧,比如,先调用 a.ts 中的逻辑,再调用 b.ts 中的逻辑,
  • 如果比较耗时,用 await ...
  • 这些是自己控制的。 没有 a.ts 一定在 b.ts 前执行的说法吧(我是这么认为的)
  • 涉及到引擎的,可能要在特定的方法中,比如 onLoad , onEnable ,要了解下执行顺序
    个人理解

有一定的顺序规则,比如文件名,但根据文件名来控制顺序这种方式并不好
1.可以通过手动import的方式,在调用某个模块之前,先引入
2.将框架另外打包成js,再放到cocos中用作插件脚本
3.代码bundle分包,来控制代码加载顺序

2赞

在assets文件夹下建A.ts文件就是最早加载的脚本

或者建js文件 设为插件

之前报错时看过,按2.4记得是按字母顺序。 因为当时新增了一个文件,突然就报错了。结果一看,字母顺序这个文件刚好比前置文件更早的加载了。 记得是编辑器调试启动时才会有生成这一份加载顺序