using DefaultNamespace.ProcessMode; using DG.Tweening; using MotionFramework; using System.Collections; using System.Collections.Generic; using UnityEngine; using HighlightPlus; using UnityEngine.EventSystems; public class JunctionBox : MonoBehaviour { /// /// 透明盖 /// public Transform TransparentlidObj; /// /// 端子排上所有封印和螺丝 /// public GameObject[] AllObjects; /// /// 接线盒滑块 /// public GameObject[] GameObjectSlider; /// /// 高亮物体 /// //public GameObject[] AllHightObj; /// /// 接线盒是否盖上 /// public bool iscover; /// /// 滑块的原始位置 /// private List originalPosition=new List(); /// /// 滑块的原始旋转 /// private Quaternion originalRotation; bool isanzhaung =false; /// /// 接线盒上的封印和螺丝 /// public GameObject[] tool; //public static JunctionBox intance; //public void Awake() //{ // intance = this; //} void Start() { Init(); } public void Init() { for (int i = 0; i < GameObjectSlider.Length; i++) { GameObjectSlider[i].GetComponent().enabled = false; originalPosition.Add(GameObjectSlider[i].transform.localPosition); //originalRotation = GameObjectSlider[i].transform.localRotation; } } /// /// 是否高亮 /// /// 高亮物体 /// 高亮 /// 是否高亮 //public void HighligtOfObj(string ObjName, HighlightEffect Highlight,bool Ishighlight) //{ // for (int i = 0; i < AllObjects.Length; i++) // { // if (Ishighlight) // { // if (AllObjects[i].name.Equals(ObjName)) // { // Highlight.enabled = false; // } // } // else // { // if (AllObjects[i].name.Equals(ObjName)) // { // Highlight.enabled = true; // } // } // } //} void Update() { if (EventSystem.current.IsPointerOverGameObject()) return; if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; bool raycast = Physics.Raycast(ray, out hit); if (raycast) { if (iscover) { //判断盖子是否打开 switch (hit.collider.gameObject.name) { // case "接线盒纵向滑块001": // hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.06131744f, -0.0075f, 0.0089f), 1f); // Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); // break; // case "接线盒纵向滑块002": // hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.02013969f, -0.0075f, 0.0089f), 1f); // Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); // break; // case "接线盒纵向滑块003": // hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.02001452f, -0.0075f, 0.0089f), 1f); // Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); // break; case "接线盒纵向滑块004": hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.06075525f, -0.00784f, 0.0089f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒横向上滑块003": hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.04339f, 0.0058f, -0.00263f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块003": hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.02001452f, -0.0074f, 0.0089f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒横向上滑块001": hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.00316f, 0.0058f, -0.00263f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块002": hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.02013969f, -0.008f, 0.0089f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒横向上滑块002": hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.0372f, 0.0058f, -0.0026f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块001": hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.06131744f, -0.0079f, 0.0089f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "三相_有互感器_无光伏_接线盒_A相_横向下滑块_正确": hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.0404f, -0.0058f, -0.0026f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "三相_有互感器_无光伏_接线盒_B相_横向下滑块_正确": hit.collider.gameObject.transform.DOLocalMove(new Vector3(0f, -0.0058f, -0.0026f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "三相_有互感器_无光伏_接线盒_C相_横向下滑块_正确": hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.0408f, -0.0058f, -0.0026f), 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; } } if (AreAllTool()) { switch (hit.collider.gameObject.name) { case "接线盒纵向滑块001": hit.collider.gameObject.transform.DOLocalMove(originalPosition[0], 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块002": hit.collider.gameObject.transform.DOLocalMove(originalPosition[1], 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块003": hit.collider.gameObject.transform.DOLocalMove(originalPosition[2], 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块004": hit.collider.gameObject.transform.DOLocalMove(originalPosition[3], 1f); Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; } } } } // if (AreAllObjectsHidden()) { TransparentlidObj.transform.DOLocalMove(new Vector3(0, -0.0914f, 0), 2f); iscover = true; //isanzhaung = true; for (int i = 0; i < GameObjectSlider.Length; i++) { GameObjectSlider[i].GetComponent().enabled = true; } } } public bool AreAllObjectsHidden() { // 检查每个对象的激活状态 foreach (GameObject obj in AllObjects) { if (obj.activeInHierarchy) // 使用 activeInHierarchy 如果你想检查对象是否在其父级结构中被激活 { return false; // 如果找到任何一个激活的对象,返回false } } return true; // 如果所有对象都未激活,返回true } //判断新集中器上的螺丝和封印是否全部显示 public bool AreAllTool() { // 检查每个对象的激活状态 foreach (GameObject obj in tool) { if (obj.activeInHierarchy) // 使用 activeInHierarchy 如果你想检查对象是否在其父级结构中被激活 { TransparentlidObj.gameObject.GetComponent().enabled = true; return true; // 如果找到任何一个激活的对象,返回 } } return false; // 如果所有对象都未激活,返回false } }