From a32eaf3baefb6d4de2587e310668651e6379855e Mon Sep 17 00:00:00 2001 From: walkpan Date: Sun, 17 May 2026 21:27:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(hero,=20map):=20=E4=BF=AE=E5=A4=8DFlashSpr?= =?UTF-8?q?ite=E6=9F=A5=E6=89=BE=E9=80=BB=E8=BE=91=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=8B=B1=E9=9B=84=E5=8D=87=E7=BA=A7=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E7=89=B9=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化HeroViewComp中的FlashSprite查找逻辑,统一为先查找自身节点再遍历子节点 将HeroViewComp的lv_up方法改为公有以支持外部调用 在MissionHeroComp的英雄升级流程中添加升级特效触发代码 --- assets/script/game/hero/HeroViewComp.ts | 15 ++++++++++++--- assets/script/game/map/MissionHeroComp.ts | 7 +++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index a0cfd40a..3bc47460 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -112,7 +112,13 @@ export class HeroViewComp extends CCComp { this.hp_show(); // 根据英雄模型中的等级数据设置描边 - const flashSprite = this.node.getComponent(FlashSprite); + // 注意:HeroViewComp 是挂在 node 上的,而 FlashSprite 可能挂在子节点(如 Sprite/anm 节点) + let flashSprite = this.node.getComponent(FlashSprite); + if (!flashSprite) { + // 如果当前节点没有,尝试在所有子节点中查找 + flashSprite = this.node.getComponentInChildren(FlashSprite); + } + if (flashSprite) { flashSprite.setOutlineByLevel(this.model.lv); } @@ -246,12 +252,15 @@ export class HeroViewComp extends CCComp { /** 升级特效 */ - private lv_up() { + public lv_up() { this.spawnTimedFx("game/skill/buff/buff_lvup", this.node, 1.0); // 升级时同步更新描边 if (this.model) { - const flashSprite = this.node.getComponent(FlashSprite); + let flashSprite = this.node.getComponent(FlashSprite); + if (!flashSprite) { + flashSprite = this.node.getComponentInChildren(FlashSprite); + } if (flashSprite) { flashSprite.setOutlineByLevel(this.model.lv); } diff --git a/assets/script/game/map/MissionHeroComp.ts b/assets/script/game/map/MissionHeroComp.ts index de853522..7a10340e 100644 --- a/assets/script/game/map/MissionHeroComp.ts +++ b/assets/script/game/map/MissionHeroComp.ts @@ -262,6 +262,13 @@ export class MissionHeroCompComp extends CCComp { model.hp_max = Math.max(1, hp_max); model.hp = model.hp_max; model.dirty_hp = true; + + // 获取视图组件触发升级特效(包含描边更新) + const view = hero.get(HeroViewComp); + if (view && typeof view['lv_up'] === 'function') { + view['lv_up'](); + } + oops.message.dispatchEvent(GameEvent.MasterCalled, { eid: hero.eid, model: model