using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class LineManager : MonoBehaviour { public static LineManager instance; public Transform point1; public Transform point2; public GameObject Tips; public TextMeshProUGUI TipTexts; private void Awake() { instance = this; } void Start() { //// 测试连接 //TestConnection(InterfaceType.IN1, InterfaceType.OUT1); // 应该正确 //TestConnection(InterfaceType.IN1, InterfaceType.GND); // 应该错误 //TestConnection(InterfaceType.正12V, InterfaceType.GND); // 应该正确 //TestConnection(InterfaceType._1uF_star, InterfaceType._1uF_end); // 应该正确 } void Update() { if (Input.GetMouseButtonDown(2)) { point1 = null; point2 = null; } } /// /// 鼠标点击的物体 /// /// public void ClickPoint(Transform point) { if (point1 != null) { point2 = point; } if (point1 == null) { point1 = point; } if (point1 != null && point2 != null) { StartCoroutine(Checkconnection(point1, point2)); } } IEnumerator Checkconnection(Transform transform, Transform transform2) { LineConnect line = transform.GetComponent(); LineConnect line2 = transform2.GetComponent(); if (line != null && line2 != null) { if (!JudgmentLine(line, line2)) { Tips.SetActive(true); yield return new WaitForSeconds(2); Tips.SetActive(false); } } } public bool JudgmentLine(LineConnect line1, LineConnect line2) { Init(); if (line1.interfaceType == InterfaceType.负12V && line2.interfaceType != InterfaceType.负12V || line2.interfaceType == InterfaceType.负12V && line1.interfaceType != InterfaceType.负12V) { TipTexts.text = "连接错误,-12V应该与-12V相连!"; //WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.正12V && line2.interfaceType != InterfaceType.正12V || line2.interfaceType == InterfaceType.正12V && line1.interfaceType != InterfaceType.正12V ) { TipTexts.text = "连接错误,12V应该与12V相连!"; //WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.零V && line2.interfaceType != InterfaceType.GND || line2.interfaceType == InterfaceType.GND && line1.interfaceType != InterfaceType.零V) { TipTexts.text = "连接错误,0V应该与GND相连!"; // WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.IN2_200K && line2.interfaceType != InterfaceType.OUT1 || line2.interfaceType == InterfaceType.IN2_200K && line1.interfaceType != InterfaceType.OUT1) { TipTexts.text = "连接错误,200K应该与OUT1相连!"; //WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.OUT1 && line2.interfaceType != InterfaceType.IN4 || line2.interfaceType == InterfaceType.OUT1 && line1.interfaceType != InterfaceType.IN4) { TipTexts.text = "连接错误,OUT1应该与IN4相连!"; // WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.AD1 && line2.interfaceType != InterfaceType.OUT2 || line2.interfaceType == InterfaceType.AD1 && line1.interfaceType != InterfaceType.OUT2) { TipTexts.text = "连接错误,200K应该与OUT1相连!"; //WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.零V && line2.interfaceType != InterfaceType.GND || line2.interfaceType == InterfaceType.GND && line1.interfaceType != InterfaceType.零V) { TipTexts.text = "连接错误,0V应该与GND相连!"; //WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.OUT && line2.interfaceType != InterfaceType.IN1 || line2.interfaceType == InterfaceType.OUT && line1.interfaceType != InterfaceType.IN1) { TipTexts.text = "连接错误,OUT应该与IN1相连!"; // WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if (line1.interfaceType == InterfaceType.AD2 && line2.interfaceType != InterfaceType.IN1 || line2.interfaceType == InterfaceType.AD2 && line1.interfaceType != InterfaceType.IN1) { TipTexts.text = "连接错误,OUT应该与IN1相连!"; // WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else if ((line1.interfaceType != InterfaceType.AD2 || line1.interfaceType != InterfaceType.OUT || line1.interfaceType != InterfaceType.零V || line1.interfaceType != InterfaceType.AD1 || line1.interfaceType != InterfaceType.OUT1 || line1.interfaceType != InterfaceType.IN2_200K || line1.interfaceType != InterfaceType.正12V || line1.interfaceType != InterfaceType.负12V) && (line2.interfaceType != InterfaceType.AD2 || line2.interfaceType != InterfaceType.OUT || line2.interfaceType != InterfaceType.零V || line2.interfaceType != InterfaceType.AD1 || line2.interfaceType != InterfaceType.OUT1 || line2.interfaceType != InterfaceType.IN2_200K || line2.interfaceType != InterfaceType.正12V || line2.interfaceType != InterfaceType.负12V)) { TipTexts.text = "连接错误,不需要此连线"; // WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; WireDrawingSystem.instance.HandleDelete(); WireDrawingSystem.instance.ClearSnapPreview(); return false; } else { return true; } } public void Init() { point2 = null; point1 = null; } }