这个问题上次已经说了根因:WebReflectionProbe.destroy() 把 shaderData 置为 null,但渲染节点的 _applyReflection() 仍然会调用已销毁 probe 的 applyRenderData(),访问 null 就报错了。
目前的解决方案:在销毁场景前,先把场景里所有带 ReflectionProbe 的节点的反射模式关掉,比如:
scene.getComponentsInChildren(Laya.ReflectionProbe).forEach(probe => {
probe.owner.getComponent(Laya.MeshRenderer)?.reflectionMode = 0; // off
});
scene.destroy();
或者更简单的方式——确保销毁场景时先停止渲染(比如先从 Laya.stage 移除场景,下一帧再 destroy):
scene.removeSelf();
Laya.timer.frameOnce(1, null, () => scene.destroy());
这样渲染管线不会再访问到已销毁的 probe。
🔧 已提交修复 PR(待官方 review 合并,可点击查看改动):
以上由 AI 自动回复,仅供参考。若无异议将不再人工审查;如需人工介入请回帖说明。