在 3.8.7 的公测贴中 首次提出 问题
在 3.8.7 的正式版中没有得到有效结局。
我怀疑是 时序 问题
在公司的电脑上定制import后有如下日志:
lazy register asset handler *
lazy register asset handler directory
lazy register asset handler text
lazy register asset handler json
lazy register asset handler auto-atlas
lazy register asset handler label-atlas
lazy register asset handler render-pipeline
// 省略...
lazy register asset handler render-stage
lazy register asset handler render-flow
lazy register asset handler instantiation-material
lazy register asset handler instantiation-mesh
lazy register asset handler instantiation-skeleton
lazy register asset handler instantiation-animation
lazy register asset handler video-clip
可以很明显的看到没有我的扩展的 importer
在 日志不远处可以 找到这样一条日志:Can not find the importer game-beginners-tutorial in editor
game-beginners-tutorial 也就是我的扩展 importer
采用 3.8.x 最新的importer 语法:
"script": "./dist/importer/index.js",
"asset-handler": [
{
"handler": "registerBeginnerTutorialImporter",
name": "game-beginners-tutorial",
extnames": [
".beginner"
]
}
]
采用了最新的设计
import { Asset } from "@cocos/creator-types/editor/packages/asset-db/@types/protected";
import type { AssetHandler } from "@cocos/creator-types/editor/packages/asset-db/@types/protected/asset-handler";
import { join } from "path";
import { PACKAGE_JSON } from "../editor/utils";
import { BeginnersAsset } from "../editor/beginners-asset";
module.paths.push(join(Editor.App.path, 'node_modules'));
const handler = {
name: "game-beginners-tutorial",
extends: 'json',
assetType: "cc.JsonAsset",
iconInfo: {
default: {
type: 'image',
value: 'packages://game-beginners-tutorial/static/asset-icon.png',
},
},
async open(asset: Asset): Promise<boolean> {
// .. do something
return true;
},
importer: {
version: PACKAGE_JSON.version,
migrations: [],
async before(asset: Asset) {
// .. do something
return true;
},
async after(asset: Asset) {
// .. do something
return true;
},
},
} as AssetHandler;
export default handler;
前面说在好的电脑上,会出现Can not find the importer game-beginners-tutorial in editor
但是在旧的很菜的电脑上则不会出现该问题。
如果现在在好的电脑上,也就是出现问题的电脑上,刷新 资源(构建)调试工具。你会发现日志便成了这样:
lazy register asset handler *
lazy register asset handler directory
lazy register asset handler text
lazy register asset handler json
lazy register asset handler spine-data
//... 省略
lazy register asset handler instantiation-mesh
lazy register asset handler instantiation-skeleton
lazy register asset handler instantiation-animation
lazy register asset handler video-clip
// 多了次条日志
lazy register asset handler game-beginners-tutorial
日志里面多了这条:
lazy register asset handler game-beginners-tutorial
此时检测插件逻辑,一切都是正常的。
希望在 3.8.8 里面修复这个importer注册时序问题。