-
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;
}
编辑器里自动运行了这个脚本
多余的节点怎么都删不掉



