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; public List Models = new List(); 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)); } } public 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相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else if (line1.interfaceType == InterfaceType.正12V && line2.interfaceType != InterfaceType.正12V || line2.interfaceType == InterfaceType.正12V && line1.interfaceType != InterfaceType.正12V ) { TipTexts.text = "连接错误,12V应该与12V相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); 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(); // LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); // 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相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else if (line1.interfaceType == InterfaceType.OUT1 && (line2.interfaceType != InterfaceType.IN4&& line2.interfaceType !=InterfaceType.IN2_200K) || line2.interfaceType == InterfaceType.OUT1 && line1.interfaceType != InterfaceType.IN4) { TipTexts.text = "连接错误,OUT1应该与IN4相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else if (line1.interfaceType == InterfaceType.AD1 && line2.interfaceType != InterfaceType.OUT2 || line2.interfaceType == InterfaceType.AD1 && line1.interfaceType != InterfaceType.OUT2) { TipTexts.text = "连接错误,AD1应该与OUT2相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else if ((line1.interfaceType == InterfaceType.零V && (line2.interfaceType != InterfaceType.GND&& line2.interfaceType != InterfaceType.III) || line2.interfaceType == InterfaceType.GND && line1.interfaceType != InterfaceType.零V) ) { TipTexts.text = "连接错误,0V应该与GND相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else if (line1.interfaceType == InterfaceType.OUT && line2.interfaceType != InterfaceType.IN1 || line2.interfaceType == InterfaceType.OUT && line1.interfaceType != InterfaceType.IN1) { TipTexts.text = "连接错误,OUT应该与IN1相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else if (line1.interfaceType == InterfaceType.AD2 && line2.interfaceType != InterfaceType.IN1 || line2.interfaceType == InterfaceType.AD2 && line1.interfaceType != InterfaceType.IN1) { TipTexts.text = "连接错误,AD2应该与IN1相连!"; LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else if ((line1.interfaceType != InterfaceType.AD2 && line1.interfaceType != InterfaceType.OUT && line1.interfaceType != InterfaceType.零V && line1.interfaceType != InterfaceType.AD1 && line1.interfaceType != InterfaceType.OUT2 && 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 && line2.interfaceType != InterfaceType.OUT2)) { TipTexts.text = "连接错误,不需要此连线"; // WireDrawingSystem.instance.currentState = WireDrawingSystem.DrawingState.Idle; //WireDrawingSystem.instance.HandleDelete(); //WireDrawingSystem.instance.ClearSnapPreview(); LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return false; } else { for (int i = 0; i < Models.Count; i++) { string[] splitname = Models[i].name.Split('连'); if (splitname[0] == line1.interfaceType.ToString() && splitname[1] == line2.interfaceType.ToString() || splitname[0] == line2.interfaceType.ToString() && splitname[1] == line1.interfaceType.ToString()) { Models[i].SetActive(true); } } LineShowModel.Instance.DeleteWiresByCollider(line1.gameObject); return true; } } public void Init() { point2 = null; point1 = null; } }