求助:3.8.5扩展禁用后再次开启,数据没有刷新怎么办

  • Creator 版本:3.8.5

  • 目标平台: Windows cocos creator编辑器

  • 重现方式:修改package.json后,调用Editor.Package.disable,1秒后调用Editor.Package.enable

  • 首个报错: 无

  • 编辑器操作系统: Windows

  • 重现概率: 偶现

新建两个扩展,扩展1有两个按钮:

  1. 输出日志:输出另外一个扩展的信息
    let packages = Editor.Package.getPackages();
    for (let i = 0; i < packages.length; i++) {
    const packageDetails = packages[i];
    if (packageDetails.name == “plugin-editor”) {
    let packageInfo: any = packageDetails.info;
    console.log("plugin-editor: ", JSON.stringify(packageInfo.panels, null, 4));
    }
    }

  2. 切换:禁用另外一个扩展,并在1s后启用扩展
    Editor.Package.disable(“E:\Coding\3.8.0\ccc-plugin-test\extensions\plugin-editor”);
    setTimeout(() => {
    Editor.Package.enable(“E:\Coding\3.8.0\ccc-plugin-test\extensions\plugin-editor”);
    }, 1000);

修改扩展2的package.json文件,删除其中的panels配置,用扩展1的切换按钮禁用并重新启用扩展2,然后输出扩展2的配置信息,结果有时候,即使把删除的panels配置还原,打印出来的信息也不包含panels配置,这是为什么呢?

如动图所示,还原panels配置后,禁用并重启扩展,结果打印扩展的panels还是undefined,有让扩展强制读取配置并重新加载的方法吗?
有兴趣的可以一研究讨论下,需求本意是改了扩展的描述,文案等,返回到编辑器可以实现自动刷新的目的,其中需要知道哪些扩展的配置有了修改,只对有改变的扩展进行禁用重启,所以才会有配置文件和编辑器里获取扩展信息的对比。
附扩展代码,plugin-bridge:打印信息及禁用重启;plugin-editor:被测试扩展;
extensions.zip (2.2 MB)

如果是修改插件的 package.json 必须要重开编辑器

1赞

感谢解答,以后会考虑在不重启编辑器的情况下实现对扩展的重新加载或者刷新吗,在目前的架构下实现这个功能有可行性方案吗

Editor.Package.register(‘插件绝对路径’)
Editor.Package.unregister(‘插件绝对路径’)

你用另外的插件进行注册跟反注册试看看

哇塞,好像可以。非常感谢! :grinning:

Tips:Editor.Package.register后不会自动开启,再调用Editor.Package.enable即可

这个算正常的