private void AddSubDevScripts(Transform childTransform, bool isJ1F1 = false) { if (isJ1F1) { recordTime1 = DateTime.Now; } for (int i = 0; i < childTransform.childCount; i++) { if (isJ1F1) { recordTime2 = DateTime.Now; } Transform child = childTransform.GetChild(i); if (isJ1F1) { FacilityDevController devController = child.gameObject.AddMissingComponent <FacilityDevController>(); if (RoomFactory.Instance) { RoomFactory.Instance.SaveStaticDevInfo(devController); } } MeshRenderer render = child.GetComponent <MeshRenderer>(); if (render != null) { child.gameObject.AddMissingComponent <MeshCollider>(); if (child.GetComponent <FacilityDevController>() == null && child.GetComponent <FacilityDevController>() == null) { child.gameObject.AddMissingComponent <FacilityMeshTrigger>(); } } AddSubDevScripts(child); //Debug.LogErrorFormat("AddSubDevCostTime:{0} ms", (DateTime.Now - recordTime2).TotalMilliseconds); } //Debug.LogErrorFormat("AddSubDevCostTime:{0} ms",(DateTime.Now-recordTime1).TotalMilliseconds); }
public void AddScprits(Transform deviceT) { int childCount = deviceT.childCount; bool isJ1F1Devs = deviceT.name.StartsWith(J1F1StaticDev);//或者J1_F1_Devices_Loader,不小心改名了 for (int i = 0; i < childCount; i++) { GameObject obj = deviceT.GetChild(i).gameObject; if (obj.name.Contains("Invalid")) { continue; } if (!isJ1F1Devs) { FacilityDevController devController = obj.AddMissingComponent <FacilityDevController>(); if (RoomFactory.Instance) { RoomFactory.Instance.SaveStaticDevInfo(devController); } MeshRenderer render = obj.transform.GetComponent <MeshRenderer>(); if (render != null) { MeshCollider meshCollider = obj.AddMissingComponent <MeshCollider>(); } } AddSubDevScripts(obj.transform, isJ1F1Devs); } }
/// <summary> /// 添加子物体脚本 /// </summary> /// <param name="childTransform"></param> IEnumerator AddSubDevScriptsCorutine(Transform childTransform, bool isJ1F1 = false, Action onComplete = null) { for (int i = 0; i < childTransform.childCount; i++) { Transform child = childTransform.GetChild(i); if (isJ1F1) { FacilityDevController devController = child.gameObject.AddMissingComponent <FacilityDevController>(); if (RoomFactory.Instance) { RoomFactory.Instance.SaveStaticDevInfo(devController); } } MeshRenderer render = child.GetComponent <MeshRenderer>(); if (render != null) { child.gameObject.AddMissingComponent <MeshCollider>(); if (child.GetComponent <FacilityDevController>() == null && child.GetComponent <FacilityDevController>() == null) { child.gameObject.AddMissingComponent <FacilityMeshTrigger>(); } } StartCoroutine(AddSubDevScriptsCorutine(child)); yield return(null); } if (onComplete != null) { onComplete(); } }
/// <summary> /// 显示设备信息 /// </summary> private void ShowDevInfo() { Vector2 screenMiddlePos = new Vector2(Screen.width / 2, Screen.height / 2); Ray ray = Camera.main.ScreenPointToRay(screenMiddlePos); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, maxDis)) { FacilityDevController dev = hitInfo.transform.GetComponentInParent <FacilityDevController>(); if (dev != null) { if (dev != lastDev) { if (lastDev != null) { lastDev.SetMouseState(false); } dev.SetMouseState(true); lastDev = dev; } } else if (lastDev != null) { lastDev.SetMouseState(false); lastDev = null; } } }
// Use this for initialization void Start() { Dev = transform.GetComponentInParent <FacilityDevController>(); DoubleClickEventTrigger_u3d trigger = DoubleClickEventTrigger_u3d.Get(gameObject); trigger.onClick = OnClick; trigger.onDoubleClick = OnDoubleClick; }
/// <summary> /// 通过检测点击,关闭UI /// </summary> private void HideUIByRaycast() { if (gameObject.activeInHierarchy) { if (IsClickUGUIorNGUI.Instance && IsClickUGUIorNGUI.Instance.isOverUI) { return; } if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, float.MaxValue)) { FacilityDevController dev = hit.transform.GetComponent <FacilityDevController>(); if (dev == null && CurrentMonitor != null) { CurrentMonitor.CloseUI(); } } } } }