From 07cc1678811f165bf7a1d57586b3f63f8b20c6c0 Mon Sep 17 00:00:00 2001 From: panFD Date: Sat, 25 Jul 2026 23:20:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(map):=20=E4=BF=AE=E5=A4=8D=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E5=8A=A8=E7=94=BB=E6=92=AD=E6=94=BE=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增节点有效性和动画组件存在性校验,避免异步加载期间节点被销毁或组件被移除导致的运行时错误 --- assets/script/game/map/CardComp.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/assets/script/game/map/CardComp.ts b/assets/script/game/map/CardComp.ts index c89267d0..031552ab 100644 --- a/assets/script/game/map/CardComp.ts +++ b/assets/script/game/map/CardComp.ts @@ -1038,9 +1038,18 @@ export class CardComp extends CCComp { if (token !== this.iconVisualToken) { return; } - this.clearAnimationClips(anim); - anim.addClip(clip); - anim.play("idle"); + // 节点可能已在异步加载期间被销毁(如 cacheCardComps 重新实例化) + if (!node || !node.isValid) { + return; + } + // 重新获取 Animation 组件,防止原组件已被移除 + const animComp = node.getComponent(Animation); + if (!animComp) { + return; + } + this.clearAnimationClips(animComp); + animComp.addClip(clip); + animComp.play("idle"); }); }