CocosCreator3.8.0版本的director.addPersistRootNode无效问题

  • Creator 版本: 3.8.0

  • 目标平台: 谷歌浏览器

  • 重现方式:有A和B两个场景,我在A场景新建一个和“Canvas”节点同一层级的节点,比如叫“pNode”, 然后在“pNode”节点上挂一个脚本,在脚本里的“onLoad”方法里通过“director.addPersistRootNode”方法把“pNode”节点设置为“常驻节点”。同时我还重写了“start”方法,在“start”方法里通过调用“director.isPersistRootNode”来判断“pNode”是否为常驻节点,测试的都返回“true”。我还重写了“onDestroy”方法,在这个方法里加了一些日志,来验证切换场景的时候这个节点到底会不会销毁(如果有日志输出,说明就会销毁)。最后我通过“director.loadScene”方法从A场景切换到B场景,结果从控制台打印可以看到“onDestroy”方法里的日志打印输出了,我在这个销毁日志里还用“director.isPersistRootNode”判断了一下“pNode”节点,这时输出的是“false”。

  • 重现概率: 必现

还请官方尽快提供一下解决方法。

给个 demo 行吗

知道问题了,原因是我的代码是这样写的:

director.loadScene("B", (err, s) => {
    director.runScene(s);
});

改成:director.loadScene(“B”, (err, s) => {});就没有问题。

好吧,我们没有 runScene 这个接口才对

是的,这个时候有“runScene”这个接口反而容易误导,主要是官方文档的这篇:

,不仔细看,不太容易看出红框里的示例是“bundle”, 我直接当“director.loadScene”的例子来用,所以闹了个乌龙。。

哦,还真的有,只是被标记为 private,所以 API 搜不到。这块让研发同学看下怎么处理比较对。