From 9125c44c99f8de12d94d6d92310ad10d73c856c1 Mon Sep 17 00:00:00 2001 From: wuwenbo Date: Fri, 12 Jun 2026 11:37:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8A=80=E8=83=BD=E5=B0=81?= =?UTF-8?q?=E5=8D=B0=E5=A4=B1=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Unity/Assets/Scripts/TH1_Data/MapData.cs | 42 ++++++++++++++++--- .../TH1_Logic/Action/UnitActionLogic.cs | 2 +- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/Unity/Assets/Scripts/TH1_Data/MapData.cs b/Unity/Assets/Scripts/TH1_Data/MapData.cs index 2b40fb6eb..31cdfc8d2 100644 --- a/Unity/Assets/Scripts/TH1_Data/MapData.cs +++ b/Unity/Assets/Scripts/TH1_Data/MapData.cs @@ -2207,7 +2207,12 @@ namespace RuntimeData //避免在遍历的时候,直接改到了skillsList using var skillHandle = THCollectionPool.GetListHandle(out var copy); copy.AddRange(unit.Skills); - foreach (var skill in copy) skill.BeforeUnitDamaged(unit, this, info); + var isFrozen = unit.IsFrozen(); + foreach (var skill in copy) + { + if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue; + skill.BeforeUnitDamaged(unit, this, info); + } } } @@ -2221,7 +2226,12 @@ namespace RuntimeData //避免在遍历的时候,直接改到了skillsList using var skillHandle = THCollectionPool.GetListHandle(out var copy); copy.AddRange(unit.Skills); - foreach (var skill in copy) skill.OnUnitDamaged(unit, this, info); + var isFrozen = unit.IsFrozen(); + foreach (var skill in copy) + { + if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue; + skill.OnUnitDamaged(unit, this, info); + } } } @@ -2234,7 +2244,12 @@ namespace RuntimeData { using var skillHandle = THCollectionPool.GetListHandle(out var copy); copy.AddRange(unit.Skills); - foreach (var skill in copy) skill.OnAnyUnitMove(map, unit, moveUnit, target, moveType); + var isFrozen = unit.IsFrozen(); + foreach (var skill in copy) + { + if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue; + skill.OnAnyUnitMove(map, unit, moveUnit, target, moveType); + } } if (target?.Skills == null) return; using var gridSkillHandle = THCollectionPool.GetListHandle(out var gridCopy); @@ -2251,7 +2266,12 @@ namespace RuntimeData { using var skillHandle = THCollectionPool.GetListHandle(out var copy); copy.AddRange(unit.Skills); - foreach (var skill in copy) skill.OnActionExecuted(logic, param, unit); + var isFrozen = unit.IsFrozen(); + foreach (var skill in copy) + { + if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue; + skill.OnActionExecuted(logic, param, unit); + } } } @@ -2265,7 +2285,12 @@ namespace RuntimeData //避免在遍历的时候,直接改到了skillsList using var skillHandle = THCollectionPool.GetListHandle(out var copy); copy.AddRange(unit.Skills); - foreach (var skill in copy) skill.OnAnyUnitDie(map, unit, dieUnit); + var isFrozen = unit.IsFrozen(); + foreach (var skill in copy) + { + if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue; + skill.OnAnyUnitDie(map, unit, dieUnit); + } } } @@ -2279,7 +2304,12 @@ namespace RuntimeData //避免在遍历的时候,直接改到了skillsList using var skillHandle = THCollectionPool.GetListHandle(out var copy); copy.AddRange(unit.Skills); - foreach (var skill in copy) skill.OnAnyUnitCreate(map, unit, newUnit); + var isFrozen = unit.IsFrozen(); + foreach (var skill in copy) + { + if (isFrozen && unit.IsSkillFrozenFilter(skill)) continue; + skill.OnAnyUnitCreate(map, unit, newUnit); + } } } diff --git a/Unity/Assets/Scripts/TH1_Logic/Action/UnitActionLogic.cs b/Unity/Assets/Scripts/TH1_Logic/Action/UnitActionLogic.cs index 3883d075a..5f106d71a 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Action/UnitActionLogic.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Action/UnitActionLogic.cs @@ -713,7 +713,7 @@ namespace Logic.Action { //将unitActionType转化为skillType if (!Enum.TryParse(_actionId.UnitActionType.ToString(), out SkillType skillType)) return false; - if (actionParam.UnitData == null || !actionParam.UnitData.GetSkill(skillType, out var _)) return false; + if (actionParam.UnitData == null || !actionParam.UnitData.HasEffectiveSkill(skillType, out var _)) return false; return true; }