1
This commit is contained in:
@@ -456,6 +456,7 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
{
|
||||
// 入场动画标记复位:座位再次激活(重进房/重新入座)时重新播
|
||||
_xjmhEnterPlayed = false;
|
||||
_xjmhEnterPending = false;
|
||||
|
||||
if (localPlayerSit == this)
|
||||
localPlayerSit = null;
|
||||
@@ -476,6 +477,8 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
|
||||
private void Update()
|
||||
{
|
||||
UpdateXJMHEnterPending(); // ⭐ XJMH 入场动画挂起补播(面板/炮台就绪即播,避免加载期播了看不到)
|
||||
|
||||
UpdateZhanShenLaser();
|
||||
|
||||
// ⭐ 长按 img_OpenPT 计时:到达阈值触发一次(提前松手不触发)
|
||||
@@ -1148,21 +1151,65 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
|
||||
/// <summary>XJMH 本地座位进房入场动画是否已播(本次激活周期只播一次;OnDisable 复位)</summary>
|
||||
private bool _xjmhEnterPlayed;
|
||||
/// <summary>已到入座时机但炮台/面板尚未激活(播了看不到)→ 挂起,等激活后 Update 补播</summary>
|
||||
private bool _xjmhEnterPending;
|
||||
|
||||
/// <summary>
|
||||
/// XJMH 本地座位进房入场动画(原版 Battery:EnterAction 非立即分支):
|
||||
/// 本次激活周期只播一次,防 ShowPlayer 被重复调用时重播。
|
||||
/// XJMH 本地座位进房入场动画(原版 PW_Data.InitPlayer → BatteryMgr.PlayEnterAction,首次播完整动画+声音):
|
||||
/// 入座时调用一次;面板/炮台未激活时挂起(此时播玩家看不到、协程也起不来)→ Update 补播。
|
||||
/// </summary>
|
||||
private void PlayXJMHEnterActionOnce()
|
||||
{
|
||||
if (_xjmhEnterPlayed) return;
|
||||
_xjmhEnterPlayed = true;
|
||||
if (_xjmhEnterPlayed || _xjmhEnterPending) return;
|
||||
|
||||
var turret = currentTurret;
|
||||
if (turret == null && xjmhTurretList != null && xjmhTurretList.Count > 0)
|
||||
turret = xjmhTurretList[0];
|
||||
if (turret != null)
|
||||
turret.PlayEnterAction();
|
||||
|
||||
// 炮台当前不可播(面板加载中/炮台未激活):挂起等就绪
|
||||
if (turret == null || !turret.isActiveAndEnabled)
|
||||
{
|
||||
_xjmhEnterPending = true;
|
||||
Debug.Log($"[XJMH入场] 座位 {name} 挂起(炮台未就绪:turret={(turret == null ? "null" : turret.name)})");
|
||||
return;
|
||||
}
|
||||
|
||||
_xjmhEnterPlayed = true;
|
||||
Debug.Log($"[XJMH入场] 座位 {name} 触发播放(炮台={turret.name})");
|
||||
if (turret is FlyTurretData flyTurret)
|
||||
flyTurret.PlayEnterAction();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// XJMH 入场动画触发/补播检查(Update 每帧):
|
||||
/// ① 兜底触发:本地座位已入座(user=本地)且从未触发过 → 走一次触发(覆盖 ShowPlayer 路径未走到的情况);
|
||||
/// ② 挂起补播:已触发但炮台/面板当时未激活 → 就绪(玩家可见)立即播。
|
||||
/// </summary>
|
||||
private void UpdateXJMHEnterPending()
|
||||
{
|
||||
// ⭐ 加载到 100% 前不触发/不补播(玩家看不到、位置未就绪):等加载完成后 Update 自然触发
|
||||
var panel = CreateFishManager.Instance?.currGameType as GameMainPanel_FishBase;
|
||||
if (panel == null || !panel.IsGameLoadCompleted) return;
|
||||
|
||||
// ① 兜底触发(Update 只在座位/面板激活时执行 → 触发时玩家已可见)
|
||||
if (turretControlMode == TurretControlMode.XJMH
|
||||
&& !_xjmhEnterPlayed && !_xjmhEnterPending
|
||||
&& !string.IsNullOrEmpty(user) && user == GameManager.Instance?.user?.id)
|
||||
{
|
||||
PlayXJMHEnterActionOnce();
|
||||
}
|
||||
|
||||
// ② 挂起补播
|
||||
if (!_xjmhEnterPending || _xjmhEnterPlayed) return;
|
||||
|
||||
var turret = currentTurret;
|
||||
if (turret == null || !turret.isActiveAndEnabled) return;
|
||||
|
||||
_xjmhEnterPending = false;
|
||||
_xjmhEnterPlayed = true;
|
||||
Debug.Log($"[XJMH入场] 座位 {name} 补播(炮台={turret.name})");
|
||||
if (turret is FlyTurretData flyTurret)
|
||||
flyTurret.PlayEnterAction();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1175,6 +1222,9 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
if (toggle_AutoAttack != null)
|
||||
toggle_AutoAttack.gameObject.SetActive(false);
|
||||
|
||||
// ⭐ 离座取消入场挂起(重进房时重新播放)
|
||||
_xjmhEnterPending = false;
|
||||
|
||||
if (turretControlMode == TurretControlMode.XJMH) return;
|
||||
|
||||
if (transform.childCount > 0)
|
||||
|
||||
Reference in New Issue
Block a user