大量节点场景下,节点销毁时卡顿

搭建游戏场景:
微信截图_20250408105755

对场景下某一建筑 执行 this.node.destroy()时游戏会有明显的卡顿。

尝试 this.node.active = false 时也会卡顿

但是 this.node.opacity = 0 时正常,没有发生卡顿;

参考 节点销毁时明显卡顿

疑似是:

因为这个节点放在游戏地图的层级下,然后每次节点删除后又会重新渲染一遍地图,现在改成只渲染相机照到的地方,就不会出现卡顿的情况了

对场景下物体挂上检验距离的脚本,贴上解决思路的代码

protected onLoad () {
    App.Event.on("onMoving", this.onMoving, this);
    this.node.active = false;
}

private onMoving(pos: cc.Vec3) {
    const distance = this.node.position.sub(pos).mag();
    this.node.active = distance > 1000 ? false : true;
}

2.4 版本 没有找到 Camera 组件的类似的功能,所以手动把距离远的节点 active = false,测试卡顿问题没有再出现

有更好的解决思路或者方法 也欢迎指教

提前给所有建筑设置固定的zindex,这样删除的时候可能就不会重新排序导致又渲染一遍。理论上猜测一下