1
This commit is contained in:
@@ -132,6 +132,8 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
/// <summary>当前运行中的战神实例(null=未显示)。炮台/战神显示二选一:有战神时 turretParent 隐藏</summary>
|
||||
[System.NonSerialized]
|
||||
public GameObject currentZhanShen;
|
||||
/// <summary>特殊炮台(钻头/激光)期间切换翅膀的暂存引用:只切换不显示,等 RestoreTurretVisual 恢复显示</summary>
|
||||
private GameObject _pendingShowWing;
|
||||
|
||||
/// <summary>战神实例上的 TurretData/ZhanShenTurretData(开火时优先取战神的子弹预制体,null=无战神或未挂组件)</summary>
|
||||
[System.NonSerialized]
|
||||
@@ -1468,9 +1470,11 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
|
||||
// 克隆到 wingParent,保持预制体原始位置/旋转/缩放
|
||||
GameObject instance = Instantiate(prefab, wingParent, false);
|
||||
instance.SetActive(true);
|
||||
// ⭐ 特殊鱼炮台(钻头/激光)使用中:只切换不显示,等爆奖流程结束由 RestoreTurretVisual 恢复显示
|
||||
instance.SetActive(!isDrillActive);
|
||||
if (isDrillActive) _pendingShowWing = instance;
|
||||
|
||||
Debug.Log($"[SitPosData] 翅膀已加载: #{turretNumber}");
|
||||
Debug.Log($"[SitPosData] 翅膀已加载: #{turretNumber}{(isDrillActive ? "(特殊炮台使用中,暂缓显示)" : "")}");
|
||||
}
|
||||
|
||||
/// <summary>卸下翅膀:清空 wingParent 下的翅膀模型(保留预设的 Camera,它是用来渲染翅膀到 RawImage 的)。</summary>
|
||||
@@ -1520,7 +1524,8 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
|
||||
// 克隆到 zhanShenParent,保持预制体原始位置/旋转/缩放
|
||||
GameObject instance = Instantiate(prefab, zhanShenParent, false);
|
||||
instance.SetActive(true);
|
||||
// ⭐ 特殊鱼炮台(钻头/激光)使用中:只切换不显示,等爆奖流程结束由 RestoreTurretVisual 恢复显示
|
||||
instance.SetActive(!isDrillActive);
|
||||
|
||||
// 绑定状态机入口:战神接管开火/待机动画(PlayFire 约定,见 TurretData.PlayWarGodAnimator)
|
||||
// 同时缓存 TurretData:开火时优先用战神的子弹预制体(bulletPrefab/bulletPrefab_Two)
|
||||
@@ -1569,8 +1574,8 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
ClearZhanShenInstance();
|
||||
currentZhanShenNumber = 0;
|
||||
|
||||
// 恢复普通炮台显示
|
||||
if (turretParent != null)
|
||||
// 恢复普通炮台显示(特殊鱼炮台使用中不显示:等 RestoreTurretVisual 统一恢复)
|
||||
if (turretParent != null && !isDrillActive)
|
||||
turretParent.gameObject.SetActive(true);
|
||||
|
||||
// 状态机入口还给普通炮台(若已加载)
|
||||
@@ -1598,6 +1603,41 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
// 散射起点球也清掉(下次出场/换战神时重建)
|
||||
ClearJGFXParents();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 特殊鱼炮台(钻头/激光)爆奖结束后的统一显示恢复入口(ZuanTouXie_DieEvent 调用)。
|
||||
/// ⭐ 炮台/战神二选一按"当前装备"恢复,不依赖爆奖前的记录:
|
||||
/// 1. 爆奖期间切换的翅膀(_pendingShowWing) → 恢复显示;
|
||||
/// 2. 有战神(含爆奖期间新切的,currentZhanShen!=null) → 显示战神,普通炮台保持隐藏;
|
||||
/// 3. 无战神 → 显示普通炮台 turretParent。
|
||||
/// 显示后强制 None→Idle 归位:炮台/战神被隐藏期间 Animator 状态会丢失,
|
||||
/// 若停在 Attack 状态,下次开火 ChangeState(Attack) 会被同状态短路 → 动画定格不播。
|
||||
/// </summary>
|
||||
public void RestoreTurretVisual()
|
||||
{
|
||||
// 挂起的翅膀:恢复显示(引用可能已被 ClearWing/再次切换销毁,Unity 判空天然处理)
|
||||
if (_pendingShowWing != null)
|
||||
{
|
||||
_pendingShowWing.SetActive(true);
|
||||
_pendingShowWing = null;
|
||||
}
|
||||
|
||||
if (currentZhanShen != null)
|
||||
{
|
||||
// 战神出战:普通炮台保持隐藏(炮台/战神二选一)
|
||||
if (turretParent != null)
|
||||
turretParent.gameObject.SetActive(false);
|
||||
currentZhanShen.SetActive(true);
|
||||
}
|
||||
else if (turretParent != null)
|
||||
{
|
||||
turretParent.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
// 动画归位:先 None 再 Idle,强制重进 Idle(避免 Attack 定格)
|
||||
ChangeState(TurretState.None);
|
||||
ChangeState(TurretState.Idle);
|
||||
}
|
||||
// -------------------------
|
||||
// 切换状态(GameMainPanel 调用)
|
||||
// -------------------------
|
||||
|
||||
Reference in New Issue
Block a user