cocos编辑器里自动执行代码创建节点无法删除

  • Creator 版本:3.8.4

  • 重现方式:我在AdMgr脚本里写了一个如果当前场景没有AdMgr节点,则自动创建一个,但我在场景里是有AdMgr节点的,而且没有任何预览和运行,只是在编辑器里,也会自动创建,而且我只要保存一次脚本,哪怕没有修改任何东西,也会自动执行创建一个AdMgr节点,直到我写了在编辑器状态下,不允许自动创建节点,才阻止了这个行为,但之前创建的AdMgr节点删不掉,怎么都删不掉

代码如下:
public static getInstance(): AdMgr {
console.warn(’[AdMgr.getInstance] 被调用,EDITOR=’, EDITOR);
console.trace(’[AdMgr.getInstance] 调用栈’);
// 1) 先返回已缓存单例
if (AdMgr.instance && isValid(AdMgr.instance) && isValid(AdMgr.instance.node)) {
AdMgr.instance.ensurePersistAndInit();
return AdMgr.instance;
}
// 2) 再去场景里找
const scene = director.getScene();
const nodeInScene = find(‘AdMgr’);
const comp = nodeInScene?.getComponent(AdMgr);

    if (comp && isValid(comp) && isValid(comp.node)) {
        AdMgr.instance = comp;
        comp.ensurePersistAndInit();
        return comp;
    }
    // 编辑器状态下,绝对不允许自动创建节点
    if (EDITOR) {
        console.warn('[AdMgr.getInstance] 当前是编辑器状态,不自动创建 AdMgr 节点');
        return {
            PLATFORM: PlatType.PC,
        } as AdMgr;
    }
    // 3) 场景里确实没有才创建(兜底)
    const node = new Node('AdMgr');
    scene?.addChild(node);
    const created = node.addComponent(AdMgr);
    AdMgr.instance = created;
    created.ensurePersistAndInit();
    return created;
}

编辑器里自动运行了这个脚本

多余的节点怎么都删不掉
image

我有几个问题,
1:为什么编辑器会自动执行我的代码,我都没有运行
2:为什么被代码创建出来的节点删不掉?

(帖子被作者删除,如无标记将在 24 小时后自动删除)

是不是在类上加了executeInEditModeimage

没有
image

这种问题,我建议你把代码贴给AI,让他帮你排查

可以在getInstance函数那里打印下上级的调用路径 console.trace("调用路径:")