From 90bf8f7f7cf8529e7599fd9c693a12fe92e6574c Mon Sep 17 00:00:00 2001 From: panw Date: Tue, 24 Mar 2026 14:42:40 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=90=88=E5=B9=B6=E8=8B=B1?= =?UTF-8?q?=E9=9B=84=E4=B8=8E=E6=80=AA=E7=89=A9=E7=9A=84=E7=94=9F=E5=91=BD?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E7=B3=BB=E7=BB=9F=E4=B8=BA=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除 MonLifecycleSystem,将其功能整合至 HeroLifecycleSystem 并重命名为 BattleEntityLifecycleSystem。新系统根据实体的 fac 属性区分英雄与怪物,输出相应的调试日志,消除了重复代码并提高了维护性。 --- assets/script/game/hero/Hero.ts | 24 +++++++++++++++++------- assets/script/game/hero/Mon.ts | 33 --------------------------------- 2 files changed, 17 insertions(+), 40 deletions(-) diff --git a/assets/script/game/hero/Hero.ts b/assets/script/game/hero/Hero.ts index ca71cf72..2ae5f494 100644 --- a/assets/script/game/hero/Hero.ts +++ b/assets/script/game/hero/Hero.ts @@ -154,9 +154,9 @@ export class Hero extends ecs.Entity { } -/** 英雄生命周期系统:监听实体进入与移除并输出调试日志 */ -@ecs.register('HeroLifecycleSystem') -export class HeroLifecycleSystem extends ecs.ComblockSystem +/** 统一生命周期系统:按 fac 区分英雄与怪物并输出日志 */ +@ecs.register('BattleEntityLifecycleSystem') +export class BattleEntityLifecycleSystem extends ecs.ComblockSystem implements ecs.IEntityEnterSystem, ecs.IEntityRemoveSystem { /** 仅处理拥有 MoveComp 的实体 */ @@ -164,23 +164,33 @@ export class HeroLifecycleSystem extends ecs.ComblockSystem return ecs.allOf(MoveComp); } + /** 基于阵营生成日志名称 */ + private resolveLabel(heroAttrs: HeroAttrsComp | null) { + if (!heroAttrs) return "未知"; + if (heroAttrs.fac === FacSet.HERO) return "英雄"; + if (heroAttrs.fac === FacSet.MON) return "怪物"; + return "未知"; + } + /** 实体进入世界时记录日志 */ entityEnter(e: ecs.Entity): void { const heroAttrs = e.get(HeroAttrsComp); + const label = this.resolveLabel(heroAttrs); if (heroAttrs) { - mLogger.log(heroAttrs.debugMode, 'HeroLifecycle', `英雄进入世界: ${heroAttrs.hero_name}`); + mLogger.log(heroAttrs.debugMode, 'BattleEntityLifecycle', `${label}进入世界: ${heroAttrs.hero_name}`); } else { - mLogger.log(true, 'HeroLifecycle', `英雄进入世界: 实体ID ${e.eid}`); + mLogger.log(true, 'BattleEntityLifecycle', `${label}进入世界: 实体ID ${e.eid}`); } } /** 实体离开世界时记录日志 */ entityRemove(e: ecs.Entity): void { const heroAttrs = e.get(HeroAttrsComp); + const label = this.resolveLabel(heroAttrs); if (heroAttrs) { - mLogger.log(heroAttrs.debugMode, 'HeroLifecycle', `英雄离开世界: ${heroAttrs.hero_name}`); + mLogger.log(heroAttrs.debugMode, 'BattleEntityLifecycle', `${label}离开世界: ${heroAttrs.hero_name}`); } else { - mLogger.log(true, 'HeroLifecycle', `英雄离开世界: 实体ID ${e.eid}`); + mLogger.log(true, 'BattleEntityLifecycle', `${label}离开世界: 实体ID ${e.eid}`); } } } diff --git a/assets/script/game/hero/Mon.ts b/assets/script/game/hero/Mon.ts index e14c8b7d..8f3f68a5 100644 --- a/assets/script/game/hero/Mon.ts +++ b/assets/script/game/hero/Mon.ts @@ -7,7 +7,6 @@ import { HeroInfo } from "../common/config/heroSet"; import { HeroAttrsComp } from "./HeroAttrsComp"; import { HeroViewComp } from "./HeroViewComp"; import { MoveComp } from "./MoveComp"; -import { mLogger } from "../common/Logger"; /** 怪物实体:负责怪物对象池复用、属性初始化、入场动画与回收 */ @ecs.register(`Monster`) export class Monster extends ecs.Entity { @@ -226,35 +225,3 @@ export class Monster extends ecs.Entity { } } -/** 怪物生命周期系统:监听实体进入与移除并输出调试日志 */ -@ecs.register('MonLifecycleSystem') -export class MonLifecycleSystem extends ecs.ComblockSystem - implements ecs.IEntityEnterSystem, ecs.IEntityRemoveSystem { - /** 调试开关,控制系统日志输出 */ - debugMode: boolean = false; - - /** 仅处理拥有 MoveComp 的实体 */ - filter() { - return ecs.allOf(MoveComp); - } - - /** 实体进入世界时记录日志 */ - entityEnter(e: ecs.Entity): void { - const heroAttrs = e.get(HeroAttrsComp); - if (heroAttrs) { - mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物进入世界: ${heroAttrs.hero_name}`); - } else { - mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物进入世界: 实体ID ${e.eid}`); - } - } - - /** 实体离开世界时记录日志 */ - entityRemove(e: ecs.Entity): void { - const heroAttrs = e.get(HeroAttrsComp); - if (heroAttrs) { - mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物离开世界: ${heroAttrs.hero_name}`); - } else { - mLogger.log(this.debugMode, 'MonLifecycleSystem', `怪物离开世界: 实体ID ${e.eid}`); - } - } -}