This commit is contained in:
2026-10-06 23:36:39 +08:00
parent 8592b9366c
commit 499eea39aa
10 changed files with 1445 additions and 1062 deletions
@@ -1039,8 +1039,10 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
mc.fishenum = (FishTypeEnum)fishType.fishType;
// 按鱼类型放入对应字典
RegisterFishInstance(mc, fishType.fishType);
// ⭐ 潜行Boss(DeferFishRegister=true)跳过注册:等子类 ActivateBoss() 激活时再入列表。
// 激活前不在鱼列表 → 自动锁定枚举/技能选鱼/服务端击杀通知全部找不到此Boss
if (!mc.DeferFishRegister)
RegisterFishInstance(mc, fishType.fishType);
mc.Init(createFishData.moveLineId, spawnDic[createFishData.fishNumber].times);
@@ -1055,8 +1057,11 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
return true;
}
/// <summary>将鱼实例注册到全局字典及对应分类字典。</summary>
private void RegisterFishInstance(MonsterContral mc, int fishTypeId)
/// <summary>
/// 将鱼实例注册到全局字典及对应分类字典。
/// ⭐ public:潜行Boss(DeferFishRegister=true)由子类 ActivateBoss() 激活时显式调用补注册。
/// </summary>
public void RegisterFishInstance(MonsterContral mc, int fishTypeId)
{
// ⭐ 检测 guid 冲突:如果 guid 已存在,说明有重复出鱼(可能是 sync 模式重发),
// 旧鱼会被覆盖变成野鱼(无法通过 Id_DieFish_NotFX 销毁)
@@ -1809,6 +1814,11 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
// ⭐ 清除座位锁定引用:炮台不再对着死亡的鱼
ClearLockOnFish(fishId);
// ⭐ 死亡优先于冰冻:见 Ws_DieFish 里的同名说明,否则冰冻期间被打死的鱼
// 动画流程被 speed=0/时间轴定格卡住,可能不消失
if (isFrozen)
currGameType?.UnfreezeFishAnimations(monster);
// 👁 调试:记录每架掉金币飞机的实际坐标,便于对比"其他位置掉金币"来源
Debug.Log($"[掉金币坐标] fishId={fishId} 飞机坐标={monster.transform.position} 金币飞向={v3Point} isLocal={isLocal} 调用栈={System.Environment.StackTrace}");
@@ -2339,6 +2349,14 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
if (!dieFishCalled)
monster.DieFish(killFish);
// ⭐ 冰冻中被打死的鱼必须脱离冰冻定格(死亡优先于冰冻):
// 冰冻是把动画停住(Animator.speed=0 / Timeline 定格 / Spine timeScale=0),
// 而不少鱼的"消失"依赖动画流程推进,例如雷皇龙/金龙靠 FLZY_BOSS_AnimatorLeave
// 的 Animator 状态退出回调回池 → 不停下来状态机永不退出 → 鱼打死了也不消失。
// 放在 DieFish 之后:要覆盖掉个别 Boss 在自己的 DieFish 里设置的 animator.speed=0。
if (isFrozen)
currGameType?.UnfreezeFishAnimations(monster);
MonsterDieList.Instance.SmallHuangYiHuang(
monster.transform.position,
monster.monsterData.fishTypeConfig.fishNumber, 1000);