From c275a0ee94e8c68200b771d05efcecdc9cefcb9a Mon Sep 17 00:00:00 2001 From: walkpan Date: Sun, 12 Apr 2026 23:03:03 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=8A=A4=E7=9B=BE):=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=20shield=5Fmax=20=E5=B1=9E=E6=80=A7=E5=B9=B6=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E6=8A=A4=E7=9B=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 护盾系统不再需要维护最大护盾值,因为护盾层数已有明确上限(FightSet.SHIELD_MAX)。 移除 HeroAttrs 枚举、HeroAttrsComp 组件、HeroAtkSystem 和 HeroViewComp 中所有对 shield_max 的引用和操作。 现在护盾层数直接受 SHIELD_MAX 限制,视图层仅需当前护盾值即可显示。 --- assets/script/game/common/config/HeroAttrs.ts | 1 - assets/script/game/hero/HeroAtkSystem.ts | 1 - assets/script/game/hero/HeroAttrsComp.ts | 5 +---- assets/script/game/hero/HeroViewComp.ts | 7 +++---- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/assets/script/game/common/config/HeroAttrs.ts b/assets/script/game/common/config/HeroAttrs.ts index 3592db82..0833323f 100644 --- a/assets/script/game/common/config/HeroAttrs.ts +++ b/assets/script/game/common/config/HeroAttrs.ts @@ -14,7 +14,6 @@ export enum Attrs { speed = "speed", // 基础移动速度 dis = "dis", // 基础距离 shield = "shield", // 当前护盾 - shield_max = "shield_max", // 最大护盾值 // ==================== 攻击属性 ==================== a_cd = "a_cd", // 攻击计时 diff --git a/assets/script/game/hero/HeroAtkSystem.ts b/assets/script/game/hero/HeroAtkSystem.ts index 88ce26f5..fa896a4b 100644 --- a/assets/script/game/hero/HeroAtkSystem.ts +++ b/assets/script/game/hero/HeroAtkSystem.ts @@ -327,7 +327,6 @@ export class HeroAtkSystem extends ecs.ComblockSystem implements ecs.ISystemUpd TAttrsComp.shield = Math.max(0, TAttrsComp.shield - 1); if (TAttrsComp.shield <= 0) { TAttrsComp.shield = 0; - TAttrsComp.shield_max = 0; } TAttrsComp.dirty_shield = true; mLogger.log(this.debugMode, 'HeroAtkSystem', ` 护盾抵挡1次伤害,剩余次数 ${TAttrsComp.shield}`); diff --git a/assets/script/game/hero/HeroAttrsComp.ts b/assets/script/game/hero/HeroAttrsComp.ts index b4012577..5b04ca7b 100644 --- a/assets/script/game/hero/HeroAttrsComp.ts +++ b/assets/script/game/hero/HeroAttrsComp.ts @@ -24,7 +24,6 @@ export class HeroAttrsComp extends ecs.Comp { speed: number = 100; // 基础移动速度 dis: number = 100; // 基础距离 shield: number = 0; // 当前护盾 - shield_max: number = 0; // 最大护盾值 // ==================== 攻击属性 (补充) ==================== skills: Record = {}; @@ -97,9 +96,8 @@ export class HeroAttrsComp extends ecs.Comp { const addValue = Math.max(0, Math.floor(value)); if (addValue <= 0) return; this.shield += addValue; - this.shield_max += addValue; + this.shield = Math.min(this.shield, FightSet.SHIELD_MAX); // 限制护盾最大层数 if (this.shield < 0) this.shield = 0; - if (this.shield_max < 0) this.shield_max = 0; this.dirty_shield = true; // 标记护盾需要更新 if (this.debugMode) { mLogger.log(this.debugMode, 'HeroAttrs', ` 护盾次数变更: ${this.hero_name}, 变化=${addValue}, ${Math.floor(oldShield)} -> ${Math.floor(this.shield)}`); @@ -229,7 +227,6 @@ export class HeroAttrsComp extends ecs.Comp { this.speed = 100; this.dis = 100; this.shield = 0; - this.shield_max = 0; // 重置新增属性 this.skills = {}; diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index 893b9eda..ff36bdd0 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -156,7 +156,7 @@ export class HeroViewComp extends CCComp { if (this.model.dirty_shield) { - this.show_shield(this.model.shield, this.model.shield_max); + this.show_shield(this.model.shield); this.model.dirty_shield = false; } } @@ -166,10 +166,9 @@ export class HeroViewComp extends CCComp { } /** 显示护盾 */ - private show_shield(shield: number = 0, shield_max: number = 0) { + private show_shield(shield: number = 0) { this.lastBarUpdateTime = Date.now() / 1000; this.node.getChildByName("shielded").active = shield > 0; - void shield_max; } /** 显示血量 */ @@ -370,7 +369,7 @@ export class HeroViewComp extends CCComp { } add_shield(shield:number){ // 护盾数据更新由 Model 层处理,这里只负责视图表现 - if(this.model && this.model.shield>0) this.show_shield(this.model.shield, this.model.shield_max); + if(this.model && this.model.shield>0) this.show_shield(this.model.shield); } health(hp: number = 0) {