用一个 _isStopped 布尔门替代 id 追踪: - OnReset 开头置 _isStopped = true - OnInit 置 _isStopped = false - OnShowEntitySuccess:只要 _isStopped 为真且是 Enemy 组,立即 HideEntity - SpawnEnemyAsync await 恢复后也补一道 _isStopped 检查(若 await 拿到了 enemy 且已停战,直接 hide 不注册)——双保险 为什么这样对:停战窗口(Shop/LevelUp)期间本就不该有任何敌人,所以"停战期间出生的敌人一律 hide"在语义上完全正确,且不受 await 同步抽空、id 复用、加载时序任何影响。
- EnemyRegistry: 移除List冗余存储, Register/Remove从O(n)→O(1) - 增加PruneInvalidEntries显式清理接口, 消除TryGet副作用 - Remove增加不存在告警, 防重复减成负数 - 增加CTS取消飞行中的异步生成, 关卡切换时取消+重建 - ClearEnemies先快照再遍历, 防Hide回调修改集合抛异常 - entityId去掉取模复用, 直接自增保证唯一 - Enemy EntityGroup调优: Capacity→10000, ReleaseInterval→30, ExpireTime→120