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