This commit is contained in:
2026-09-28 20:19:27 +08:00
parent d396870d37
commit 106c48cf82
12 changed files with 154 additions and 15 deletions
@@ -443,6 +443,9 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
/// <summary>进入房间:初始化生成系统并绑定游戏面板。</summary>
public void EnterRoom(GameTypeEnum gameType)
{
// ⭐ 复位残留冰冻状态:冰冻中切房时旧面板倒计时未走完就销毁,
// 不会触发 UnfreezeAllFish → isFrozen 残留 true → 新房间 OnFishSpawn 全部被拦,不出鱼
ResetFreezeState();
InitSpawnSystem(gameType);
BindCurrentGamePanel();
EnsureBJEffectRoot();
@@ -1344,6 +1347,9 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
{
//await Task.Delay(2000);
// ⭐ 退房复位冰冻状态:冰冻中退房时旧面板倒计时未走完就销毁,
// 不会触发 UnfreezeAllFish → isFrozen 残留 true → 污染下一个房间不出鱼
ResetFreezeState();
spawnList = null;
spawnDic = null;
// ⭐ 退房清理排队中的出鱼事件,防止旧房间残留鱼泄进下一个房间
@@ -2333,6 +2339,23 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
}
#region 冰冻技能
/// <summary>
/// 复位冰冻状态(退房/进房时调用):
/// 清除 isFrozen 与冰冻记录,并停掉所有出鱼协程。
/// ⭐ 若不复位:冰冻中切换房间时,旧面板的 15s 解冻倒计时随面板一起销毁,
/// 永远不会调用 UnfreezeAllFish → isFrozen 残留 true →
/// 新房间 OnFishSpawn 第一行 `if (isFrozen) return;` 把服务端所有出鱼全部拦掉 → 新房间不出鱼。
/// ⭐ StopAllCoroutines:分帧出鱼协程里的 `while (isFrozen) yield return null;` 会一直挂起,
/// 解冻复位后会继续把旧房间排队的鱼生成到新房间,必须一并停掉。
/// </summary>
public void ResetFreezeState()
{
isFrozen = false;
frozenFishStates.Clear();
frozenFishIsMoves.Clear();
StopAllCoroutines();
}
/// <summary>
/// 冰冻:记录所有鱼当前状态并强制切到 Idle(暂停移动+动画)
/// </summary>