diff --git a/assets/script/game/common/SingletonModuleComp.ts b/assets/script/game/common/SingletonModuleComp.ts index a4b13dd6..3389fe12 100644 --- a/assets/script/game/common/SingletonModuleComp.ts +++ b/assets/script/game/common/SingletonModuleComp.ts @@ -153,6 +153,9 @@ export class SingletonModuleComp extends ecs.Comp { [Attrs.WFUNY]: [1, 0], // 风怒率 }; + /** 主角实体引用 */ + role: ecs.Entity | null = null; + /** * 记录天赋获取 * @param id 天赋ID diff --git a/assets/script/game/hero/Hero.ts b/assets/script/game/hero/Hero.ts index d8d5084e..eafbf1f5 100644 --- a/assets/script/game/hero/Hero.ts +++ b/assets/script/game/hero/Hero.ts @@ -31,6 +31,11 @@ export class Hero extends ecs.Entity { } destroy(): void { + // 如果是主角,清理全局引用 + if (smc.role === this) { + smc.role = null; + } + // 销毁节点,防止视觉残留 const view = this.get(HeroViewComp); if (view && view.node && view.node.isValid) { @@ -86,6 +91,7 @@ export class Hero extends ecs.Entity { model.rangeType = hero.rangeType; // 只有主角才挂载天赋组件 if (is_master) { + smc.role = this; // 记录主角实体引用 this.add(TalComp); const talComp = this.get(TalComp); if (talComp) { diff --git a/assets/script/game/map/MissionComp.ts b/assets/script/game/map/MissionComp.ts index 30d65f3e..f791b713 100644 --- a/assets/script/game/map/MissionComp.ts +++ b/assets/script/game/map/MissionComp.ts @@ -272,6 +272,9 @@ do_ad(){ this.revive_times = 1; // 每次任务开始重置复活次数 this.spawnedSpecialIndices.clear(); // 重置特殊刷怪记录 + // 重置全局属性加成和主角引用 (确保新一局数据干净) + smc.role = null; + // 重置英雄数据,确保新一局是初始状态 smc.vmdata.hero = { name:'',