2D CANVAS预制资源主动销毁后无法再创

这可能是个BUG,我测试了许多次一直有错,出现步骤如下:
将2D预制节点创建在scene之后
打开它,然后点击另一个节点里面的按钮让其销毁.destroy()
此时问题出现了:
有时候是一次,有时候是二或三次,再点击创建这个预制资源时就会出现parent为空的提示,然后找来找去也找不到哪里有错误,但就是无法再次创建预制资源。
而且我也并没有设置什么parent节点的操作
只是第一个按钮点击就是创建预制资源,并加入场景中
然后再点此节点的另一个按钮,销毁刚加载的预制资源
这时就出现上面的问题了。

创建预制资源的代码如下:

    let loadnode=director.getScene().getChildByName("Loadpre");
    if(!loadnode){
        loader.loadRes("Loadpre", Prefab , (err: any, prefab: Prefab) => {
            if(prefab){
                const newNode = instantiate(prefab);
                director.getScene().addChild(newNode); 
                //newNode.active=false;
            }
        });
      return false;
    }

错误提示如下:

我再测试一下,可能是我的2D节点消失太快。
不过还有一个问题就是如果我主动销毁了预制节点,
竟然会影响再次创建
提示prent父为能不空,但是我找了所有代码均没有地方卡在这一步的
这可能是个BUG,出现步骤如下:
将2D预制节点创建在scene之后
打开它,然后点击另一个节点里面的按钮让其销毁.destroy()
此时问题出现了:
有时候是一次,有时候是二或三次,再点击创建这个预制资源时就会出现prent为空的提示,然后找来找去也找不到哪里有错误,但就是无法再次创建预制资源。

我之前的回答好像回错贴了:joy:,麻烦看下你销毁那里的代码

let loadnode=director.getScene().getChildByName(“Loadpre”);
if(loadnode){
loadnode.destroy();
}
按理说销毁后,再创建没问题。不过就出现了问题。

再创建什么意思,这个节点再拿来复用?

我用这样的代码测试没问题,不是很明白你这里具体发生问题的地方

director.getScene()返回的只是逻辑场景,
节点应该加到节点上,比如改成这样:
director.getScene().getChildByName(‘Canvas’).addChild(newNode);

问题找到了,是因为操作太快了,预制资源 还没有加载完,就销毁而发生的错误。
这个没办法了,只能延迟销毁了。