扩展编辑器,拷贝文件

现在有一个材质球,我需要制作多份,怎么编写代码。类似于Unity的Editor代码有没有?我了解到是要用扩展编辑器,但是我创建扩展,运行npm install直接就报错了,有没有大佬帮忙看看。

TypeError: Cannot read properties of null (reading ‘toString’)
at checkCreatorTypesVersion (D:\work\backpack-frontend\extensions\tool\scripts\preinstall.js:1:332)
at Object. (D:\work\backpack-frontend\extensions\tool\scripts\preinstall.js:1:533)
at Module._compile (node:internal/modules/cjs/loader:1358:14)
at Module._extensions…js (node:internal/modules/cjs/loader:1416:10)
at Module.load (node:internal/modules/cjs/loader:1208:32)
at Module._load (node:internal/modules/cjs/loader:1024:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
at node:internal/main/run_main_module:28:49

added 3 packages, changed 1 package, and audited 5 packages in 4s

我现在写工具都是在运行模式下写的。。。。 或者有没有运行模式下可以实现拷贝文件也可以,主要是找不到对应的api

创建扩展没遇到过这个报错,我都是直接使用creator编辑器内的扩展/创建扩展菜单创建的。

材质球如果是运行时需要多份的话,可以直接new Material材质球对象,传入对应的EffectAsset或者名称即可。

编辑器瞎制作多份资源的话,我一般是手动创建一份,然后设置好参数,最后使用await Editor.Message.request('asset-db', 'copy-asset', sourceUrl, targetUrl, { overwrite: false, rename: true });指令去复制,参考消息系统

1赞

我也报这种错了,新建扩展,运行npm install必报。3.8.3,3.8.4都报。
解决方法:
let versionList = spawnSync(cmd, [‘view’, ‘@cocos/creator-types’, ‘versions’], {

    shell: true,

    windowsVerbatimArguments: false,

}).stdout.toString();
2赞

厉害呀。我刚要写插件。新建一个空的都编译报错

我也遇到了这个问题,是nodejs版本的问题。原来电脑上装的nodejs是V18.xxxx版本,折腾了半天没搞定,就去装了node v20.11.1版本,就没报错了。建议通过nvm来控制版本切换