From ee9d72be5c7a5f0c924f1e03edd7dea29a30dee1 Mon Sep 17 00:00:00 2001 From: walkpan Date: Thu, 5 Feb 2026 08:01:34 +0800 Subject: [PATCH] =?UTF-8?q?fix(hero):=20=E4=BF=AE=E5=A4=8D=E8=8B=B1?= =?UTF-8?q?=E9=9B=84=E5=B1=9E=E6=80=A7=E7=BB=84=E4=BB=B6=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E7=9B=91=E5=90=AC=E6=9C=AA=E6=AD=A3=E7=A1=AE=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=92=8C=E6=B8=85=E7=90=86=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 HeroAttrsComp 的事件监听从 onLoad/onDestroy 生命周期方法移至显式调用的 initEvent/removeEvent 方法,确保在 Hero 初始化时正确初始化事件监听,并在重置时清理事件监听,避免事件重复绑定和内存泄漏。 --- assets/script/game/hero/Hero.ts | 1 + assets/script/game/hero/HeroAttrsComp.ts | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/script/game/hero/Hero.ts b/assets/script/game/hero/Hero.ts index f141c112..2790a39a 100644 --- a/assets/script/game/hero/Hero.ts +++ b/assets/script/game/hero/Hero.ts @@ -93,6 +93,7 @@ export class Hero extends ecs.Entity { if (talComp) { talComp.init(uuid); } + model.initEvent(); } // ✅ 初始化技能数据(迁移到 HeroSkillsComp) diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index 13566fa5..fbd52f8d 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -82,7 +82,7 @@ export class HeroAttrsComp extends ecs.Comp { killed_count:number=0; // 注意:技能数据已迁移到 HeroSkillsComp,不再存储在这里 - onLoad() { + initEvent() { // 监听升级事件 mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] 注册升级事件监听`); oops.message.on(GameEvent.CanUpdateLv, this.onLevelUp, this); @@ -91,7 +91,7 @@ export class HeroAttrsComp extends ecs.Comp { // oops.message.on(GameEvent.UseAttrCard, this.onUseAttrCard, this); } - onDestroy() { + removeEvent() { mLogger.log(this.debugMode, 'HeroAttrs', `[HeroAttrs] 移除升级事件监听`); oops.message.off(GameEvent.CanUpdateLv, this.onLevelUp, this); // oops.message.off(GameEvent.UseItemCard, this.onUseItemCard, this); @@ -681,6 +681,7 @@ export class HeroAttrsComp extends ecs.Comp { } reset() { + this.removeEvent(); // 重置为初始状态 this.hero_uuid = 1001; this.hero_name = "hero";