diff --git a/Assets/Scripts/FixSystem/Cable/PhysicCable.cs b/Assets/Scripts/FixSystem/Cable/PhysicCable.cs index a22ed3501..aa7fa4da1 100644 --- a/Assets/Scripts/FixSystem/Cable/PhysicCable.cs +++ b/Assets/Scripts/FixSystem/Cable/PhysicCable.cs @@ -1,4 +1,4 @@ -using UnityEngine; +using UnityEngine; using UnityEngine.Serialization; public class PhysicCable : MonoBehaviour @@ -7,6 +7,9 @@ public class PhysicCable : MonoBehaviour public PhysicLineSegment physicLine; + private Transform targetTransform; + private bool isEnabled; + // Start is called before the first frame update void Start() { @@ -17,4 +20,33 @@ public class PhysicCable : MonoBehaviour { physicLine.Initialize(startTransform.position, endPos); } + + public void HideCable() + { + GetComponent().enabled = false; + } + + public void ShowCable() + { + GetComponent().enabled = true; + } + + public void SetEnabled(bool enabled) + { + isEnabled = enabled; + GetComponent().enabled = enabled; + } + + public void SetTarget(Transform target) + { + targetTransform = target; + } + + private void Update() + { + if (isEnabled && targetTransform != null) + { + physicLine.UpdatePlug(targetTransform); + } + } } \ No newline at end of file diff --git a/Assets/Scripts/FixSystemNew/FixStateMachine.cs b/Assets/Scripts/FixSystemNew/FixStateMachine.cs index 70241532b..89f135cd4 100644 --- a/Assets/Scripts/FixSystemNew/FixStateMachine.cs +++ b/Assets/Scripts/FixSystemNew/FixStateMachine.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections; using AibisDream.Framework; using AibisDream.Kit; @@ -149,8 +149,7 @@ namespace AibisDream.FixSystem public IEnumerator Enter() { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); - var screenSystem = FixSystemCenter.SystemDic.Get(); - var lightSystem = screenSystem?.FixLightSystem; + var lightSystem = FixPanelSystem.GetRepairPanel().FixLightSystem; // 拔出插头 // 切换Body或Head if (Enum.TryParse(_args, out var moduleState)) @@ -169,12 +168,12 @@ namespace AibisDream.FixSystem } else { - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule); } // 加载气泡 - var data = FixSystemCenter.SystemDic.Get().BubbleSlotGroup.CollectData(); + var data = FixPanelSystem.Instance.BubbleSlotGroup.CollectData(); DialogUIManager.Instance.LoadBubbles(data); // 开启交互 @@ -185,14 +184,13 @@ namespace AibisDream.FixSystem { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); // 拔出插头 - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); // 关闭交互 bodyModuleSystem.DisableSystem(); yield break; } } - public struct GearState : IState { public FixState GetState => FixState.Gear; @@ -263,7 +261,7 @@ namespace AibisDream.FixSystem public IEnumerator Exit() { var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); yield break; } } @@ -288,7 +286,7 @@ namespace AibisDream.FixSystem } // 插头回到初始插孔 - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); // 切换相机 yield return CameraKit.Instance.SwitchCamera(CameraEnum.UF); yield return UIManager.Instance.GetPanel().FadeInAsync(0.5f); @@ -341,7 +339,7 @@ namespace AibisDream.FixSystem yield return new WaitForSeconds(0.1f); sp.sprite = Resources.Load("Art/Fix/Peipei/Eye/视觉模块盖子打开B"); // 插头回到初始插孔 - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); // 切换相机 yield return CameraKit.Instance.SwitchCamera(CameraEnum.Eye); yield return UIManager.Instance.GetPanel().FadeInAsync(0.5f); @@ -395,7 +393,7 @@ namespace AibisDream.FixSystem yield return memorySystem.DropMemoryProjector(); // 插头回到初始插孔 - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); // 相机聚焦到目标位 yield return CameraKit.Instance.SwitchCamera(CameraEnum.Memory); yield return UIManager.Instance.GetPanel().FadeInAsync(duration); @@ -458,7 +456,7 @@ namespace AibisDream.FixSystem var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); // 重置身体模块 - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); // 关闭表达系统视图 expressionManager.CloseView(); @@ -496,7 +494,7 @@ namespace AibisDream.FixSystem { var emoManager = FixSystemCenter.SystemDic.Get(); var bodyModuleSystem = FixSystemCenter.SystemDic.Get(); - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); //emoManager.CloseView(); yield break; } @@ -574,7 +572,7 @@ namespace AibisDream.FixSystem // Cut的气泡统一放在BodyModule下 DialogUIManager.Instance.LoadBubbles(cuttingManager.bubbleSlotGroup.CollectData()); - bodyModuleSystem.CableSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); var bodyModule = bodyModuleSystem.FindBodyModuleByName("Emo"); if (bodyModule != null) { @@ -625,7 +623,7 @@ namespace AibisDream.FixSystem // Cut的气泡统一放在BodyModule下 DialogUIManager.Instance.LoadBubbles(cuttingManager.bubbleSlotGroup.CollectData()); - bodyModuleSystem.CableSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); var bodyModule = bodyModuleSystem.FindBodyModuleByName("Memory"); if (bodyModule != null) { @@ -726,7 +724,7 @@ namespace AibisDream.FixSystem } // 插头回到初始插孔 - bodyModuleSystem.ResetPlug(); + FixPanelSystem.GetRepairPanel().ResetPlug(); // 切换到分析模式相机 yield return UIManager.Instance.GetPanel().FadeInAsync(0.5f); diff --git a/Assets/Scripts/FixSystemNew/Open/ShockSystem.cs b/Assets/Scripts/FixSystemNew/Open/ShockSystem.cs index dcd7d10d8..0d03bcd52 100644 --- a/Assets/Scripts/FixSystemNew/Open/ShockSystem.cs +++ b/Assets/Scripts/FixSystemNew/Open/ShockSystem.cs @@ -1,4 +1,4 @@ -using UnityEngine; +using UnityEngine; using UnityEngine.UI; using DG.Tweening; using TMPro; @@ -383,8 +383,7 @@ public class ShockSystem : MonoBehaviour yield return new WaitForSeconds(shockFlashDelay); // 获取ECG波形组件 - var screenSystem = FixSystemCenter.SystemDic.Get(); - var lightSystem = screenSystem?.FixLightSystem; + var lightSystem = FixPanelSystem.GetRepairPanel()?.FixLightSystem; var originalWaveType = lightSystem?.GetCurrentWaveType(); flashSequence = DOTween.Sequence();