自定义构建 copy-asset 耗时问题

  • Creator 版本: 3.8.2
  • 目标平台:微信小游戏
  • 问题描述
    在自定义构建脚本 hooks.ts 的勾子函数 onBeforeBuild 中,通过 asset-db 的 copy-asset 消息对工程中的部分资源进行了复制操作(文件数量大概在4000个),但是发现这个操作会让打包时间变得非常久(从之前的10分钟增加到1个多小时)。

通过查看构建日志发现,主要的耗时是由于复制完成后的资源 Import 操作:在构建期间,资源 Import 的频率似乎会降得很低,大概每20秒才能导入几个资源。

PS: 如果是在非构建期间,在 资源(构建)调试工具 中执行同样的拷贝操作,大概3分钟就完成了。

在执行 onBeforeBuild 钩子函数后,资源会暂停导入,执行的操作消息都会等构建结束后处理。你可以理解为正式构建期间是不允许对资源进行操作的,否则可能引起构建结果异常,目前构建过程中界面操作也是锁定的。

image

如果在 onBeforeBuild 里等待执行拷贝资源只能确保这些资源拷贝完成了,但是不能保障导入完成

那如果我想在构建前做资源复制和导入的操作,要怎么处理比较合适呢?onBeforeBuild 已经是自定义构建中最早的 hook 时机了吧?

没事了,已经搞定了。

这种情况可以写一个扩展插件,在扩展插件里先进行资源复制等操作,结束后再通过命令行调用 CocosCreator.exe 进行打包。