From 031b91311a3ed8cadcd389a1503dc0c26f8ffcfa Mon Sep 17 00:00:00 2001 From: panw Date: Tue, 3 Feb 2026 09:14:18 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=8A=80=E8=83=BD=E7=B3=BB=E7=BB=9F):?= =?UTF-8?q?=20=E7=A7=BB=E9=99=A4=E4=BA=8B=E4=BB=B6=E9=80=9A=E4=BF=A1?= =?UTF-8?q?=EF=BC=8C=E7=9B=B4=E6=8E=A5=E8=B0=83=E7=94=A8=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8A=80=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除 HeroSkillsComp 中监听 GameEvent.UseSkillCard 的代码 - 在 MissionCardComp 中直接调用 HeroSkillsComp.addSkill() 方法 - 简化组件间通信方式,避免不必要的事件派发 --- assets/script/game/hero/HeroSkills.ts | 14 ++------------ assets/script/game/map/MissionCardComp.ts | 9 +-------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/assets/script/game/hero/HeroSkills.ts b/assets/script/game/hero/HeroSkills.ts index b254b196..498758a9 100644 --- a/assets/script/game/hero/HeroSkills.ts +++ b/assets/script/game/hero/HeroSkills.ts @@ -45,20 +45,11 @@ export class HeroSkillsComp extends ecs.Comp { ai_timer: number = 0; onLoad() { - oops.message.on(GameEvent.UseSkillCard, this.onUseSkillCard, this); + } onDestroy() { - oops.message.off(GameEvent.UseSkillCard, this.onUseSkillCard, this); - } - - private onUseSkillCard(event: string, args: any) { - const attrsComp = this.ent.get(HeroAttrsComp); - if (!attrsComp || !attrsComp.is_master) return; - - const s_uuid = args as number; - console.log(`[HeroSkills] 收到技能选择事件,添加技能 ID: ${s_uuid}`); - this.addSkill(s_uuid, HSSet.skill); + } // ==================== 辅助方法 ==================== @@ -280,7 +271,6 @@ export class HeroSkillsComp extends ecs.Comp { } reset() { - oops.message.off(GameEvent.UseSkillCard, this.onUseSkillCard, this); this.skills = {}; } setMaxAuto(on: boolean) { diff --git a/assets/script/game/map/MissionCardComp.ts b/assets/script/game/map/MissionCardComp.ts index 9e6f7034..eae0d941 100644 --- a/assets/script/game/map/MissionCardComp.ts +++ b/assets/script/game/map/MissionCardComp.ts @@ -448,14 +448,7 @@ export class MissionCardComp extends CCComp { // 直接调用 HeroSkillsComp 添加技能 const skillComp = role.get(HeroSkillsComp); if (skillComp) { - // 假设 HeroSkillsComp 有 addSkill 方法,如果没有需要根据实际情况调整 - // 这里暂时假设通过事件触发或需要补充直接调用的方法 - // 由于 HeroSkillsComp 之前可能主要依赖初始化,这里可能需要补充 addSkill 逻辑 - // 或者如果 HeroSkillsComp 监听了 UseSkillCard 且判断了 is_master,可以保留事件但需谨慎 - // 为了完全隔离,建议在 HeroSkillsComp 中暴露 addSkill 接口 - // 目前先保留事件派发,但在 HeroSkillsComp 中加强 is_master 判断 - // 或者:skillComp.addSkill(selectedData.uuid); - oops.message.dispatchEvent(GameEvent.UseSkillCard, selectedData.uuid); + skillComp.addSkill(selectedData.uuid); } break; case CardType.Partner: