我希望在按照构建面板的设定在构建之前动态添加某些资源和代码:
export const onBeforeBuild: BuildHook.onBeforeBuild = async function (options: ITaskOptions, result: IBuildResult) {
const pkgOptions = options.packages[PACKAGE_NAME];
log('onBeforeBuild', pkgOptions);
if (pkgOptions['poco_enabled']) {
// 获得poco 资源路径
let pocoSourcePath = path.join(Editor.Project.path, 'opt_assets', 'poco');
log(`[${PACKAGE_NAME}] poco source path: ${pocoSourcePath}`);
let pocoTargetPath = path.join(Editor.Project.path, 'assets', 'scripts');
log(`[${PACKAGE_NAME}] poco target path: ${pocoTargetPath}`);
// 拷贝pocoSourcePath到pocoTargetPath
Editor.Utils.File.copy(path.join(pocoSourcePath, 'Poco'), path.join(pocoTargetPath, 'Poco'));
Editor.Utils.File.copy(path.join(pocoSourcePath, 'Poco.meta'), path.join(pocoTargetPath, 'Poco.meta'));
// await Editor.Message.request('asset-db', 'query-ready');
await Editor.Message.send('asset-db', 'refresh-asset', 'db://assets');
} else {
Editor.Utils.File.trashItem(path.join(Editor.Project.path, 'assets', 'scripts', 'Poco'));
Editor.Utils.File.trashItem(path.join(Editor.Project.path, 'assets', 'scripts', 'Poco.meta'));
// 刷新资源库
// await Editor.Message.request('asset-db', 'query-ready');
await Editor.Message.send('asset-db', 'refresh-asset', 'db://assets');
}
};
但是我发现第一次执行,资源会被锁定,Poco目录并不会被打包。去除 Poco 时,部分代码资源依然被执行。
有什么方式可以让第一遍也不报错呢?
是不是跟"构建中,锁定资源操作…"有关?
手册上说,不是应该能等 await 的异步完了之后再继续嘛?
拷贝的资源进来,我想让新的资源被 creator自动导入了再继续,有办法吗?