using DG.Tweening; using Microsoft.Cci; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using ZXK.Framework; using ZXK.UTility; /******************************************************************************* *Create By CG *Function 连接模式控制 *******************************************************************************/ namespace ZXK.BYSS { public class ConnectPanel : UIBase { //刚进入场景有个提示,此时后面出现蒙版不允许点击其他位置 private GameObject _maskPanel = null; private void OnEnable() { string hintStr = null; foreach (HintModel.AppHintData item in AppManagement.Instance._HintData._AppHints) { if (item._AppName.Equals(EnumCtrl.GetEnumDescription(AppManagement.Instance._CurType))) { hintStr = item._TrainHints[1]._TrainHint; } } _maskPanel = GetWedage("EnterMask_N"); _maskPanel.gameObject.SetActive(false); //PopUpMng.PopToast("实训任务2", hintStr, "确定", () => //{ // //}); if (AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ) { Camera.main.transform.position = new Vector3(6.4f, 1.1f, -13.2f);//调整相机位置 Vector3 eulerAngles = new Vector3(82.5f, -90.0f, 0f); Quaternion rotation = Quaternion.Euler(eulerAngles); Camera.main.transform.rotation = rotation;//调整相机角度 Camera.main.fieldOfView = 60f;//调整相机FOV } } private void Start() { //AddEventListener("DebugBtn_N", UIEventType.OnButtonClick, () => //{ // AppManagement.Instance.EnterProcess(EnumCtrl.Model.Debug); //}); //根据不同模式加载不同的内容,端子分配图 Switch_TerminalRefPop_N_Logic(); Switch_LineRefPop_N_Logic(); AddEventListener("StartGasBtn_N", UIEventType.OnButtonClick, () => { EventCenterManager.Instance.Dispatch(EventEnum.AutoConnect, this, null); }); PracticeAndExamInSceneCtrl Cur_practiceAndExamInSceneCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //设置配音 if (Cur_practiceAndExamInSceneCtrl.speakManager != null) { Cur_practiceAndExamInSceneCtrl.speakManager.Init(); Cur_practiceAndExamInSceneCtrl.speakManager.ChangeModelAudio("设备接线"); Cur_practiceAndExamInSceneCtrl.speakManager.PlayAudioCilp(); } //搬运输送,考核模式覆盖上边配置的声音,覆盖成考核模式配音 if (AppManagement.Instance._CurType == EnumCtrl.Type.BYSS && AppManagement.Instance._TrainExam == EnumCtrl.Model.Exam ) { Cur_practiceAndExamInSceneCtrl.speakManager.Init(); Cur_practiceAndExamInSceneCtrl.speakManager.ChangeModelAudio("设备接线_考核"); Cur_practiceAndExamInSceneCtrl.speakManager.PlayAudioCilp(); } //智能运动,添加前后视角 if (AppManagement.Instance._CurType == EnumCtrl.Type.ZNYD) { //前后视角UI显示 GetWedage("ViewBtn_N").gameObject.SetActive(true); GetWedage("Qian_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Hou_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Qian_N").GetComponent().onValueChanged.AddListener((ist) => { PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; _practiceAndExamCtrl.Set_ZNYD_Qian_View(); }); GetWedage("Hou_N").GetComponent().onValueChanged.AddListener((ist) => { PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; _practiceAndExamCtrl.Set_ZNYD_Hou_View(); }); GetWedage("Qian_N").GetComponent().isOn = true; GetWedage("Hou_N").GetComponent().isOn = false; } else { GetWedage("ViewBtn_N").gameObject.SetActive(false); } #region 步骤接线设置 //智能运动 if ((AppManagement.Instance._CurType == EnumCtrl.Type.ZNYD)) { if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Exam) { Debug.Log("不是考试模式才能调用步骤接线端子"); } else { Debug.Log("练习教学模式可以接线端子"); PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //获取所有端子口 //并且显示第一个 _practiceAndExamCtrl._connectLineCtrl.GetAllTerminalCtrl(); _practiceAndExamCtrl._connectLineCtrl.SetCurrentTerminalCtrl(); } } //搬运输送 if ((AppManagement.Instance._CurType == EnumCtrl.Type.BYSS)) { if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Exam) { Debug.Log("不是考试模式才能调用步骤接线端子"); } else { Debug.Log("练习教学模式可以接线端子"); PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //获取所有端子口 //并且显示第一个 _practiceAndExamCtrl._connectLineCtrl.GetAllTerminalCtrl(); _practiceAndExamCtrl._connectLineCtrl.SetCurrentTerminalCtrl(); SetByssLineTip(); } } //材料分拣 if ((AppManagement.Instance._CurType == EnumCtrl.Type.CLFJ)) { if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Exam) { Debug.Log("不是考试模式才能调用步骤接线端子"); } else { Debug.Log("练习教学模式可以接线端子"); PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //获取所有端子口 //并且显示第一个 _practiceAndExamCtrl._connectLineCtrl.GetAllTerminalCtrl(); _practiceAndExamCtrl._connectLineCtrl.SetCurrentTerminalCtrl(); SetByssLineTip(); } } //气动冲压 if ((AppManagement.Instance._CurType == EnumCtrl.Type.QDCY)) { if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Exam) { Debug.Log("不是考试模式才能调用步骤接线端子"); } else { Debug.Log("练习教学模式可以接线端子"); PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //获取所有端子口 //并且显示第一个 _practiceAndExamCtrl._connectLineCtrl.GetAllTerminalCtrl(); _practiceAndExamCtrl._connectLineCtrl.SetCurrentTerminalCtrl(); SetByssLineTip(); } } //循环搬运 if ((AppManagement.Instance._CurType == EnumCtrl.Type.XHBY)) { if (AppManagement.Instance._TrainExam == EnumCtrl.Model.Exam) { Debug.Log("不是考试模式才能调用步骤接线端子"); } else { Debug.Log("练习教学模式可以接线端子"); PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; //获取所有端子口 //并且显示第一个 _practiceAndExamCtrl._connectLineCtrl.GetAllTerminalCtrl(); _practiceAndExamCtrl._connectLineCtrl.SetCurrentTerminalCtrl(); SetByssLineTip(); } } #endregion #region 提示语言UI设置 if (AppManagement.Instance._CurType==EnumCtrl.Type.ZNYD|| AppManagement.Instance._CurType == EnumCtrl.Type.BYSS) { GetWedage("ShowToastUIPrefab_N").SetActive(false); } else { GetWedage("ShowToastUIPrefab_N").SetActive(true); GetWedage("Text_N").GetComponent().text = "操作提示:请点击PLC与接线端子盒上的端子,正确进行接线。"; } #endregion } public void SetByssLineTip() { if (Current < ByssTipText.Length) { GetWedage("Text_N").GetComponent().text = "操作提示:" + ByssTipText[Current]; } else { WDebug.Log("超出索引,结束"); } } public void AddByssIndex() { Current++; } int Current = 0; //搬运输送接线提示 public string[] ByssTipText = new string[12]{ "请点击端子排左侧一组0V电源线,并与相应的端口进行连接。", "请点击端子排左侧一组信号线,并与相应的端口进行连接。", "请点击端子排左侧24V电源线,并与相应的端口进行连接。", "请点击端子排右侧一组0V电源线,并与相应的端口进行连接。", "请点击端子排右侧一组信号线,并与相应的端口进行连接。", "请点击端子排右侧24V电源线,并与相应的端口进行连接。", "请点击端子排左侧一组24V电源线,并与相应的端口进行连接。", "请点击端子排左侧一组0V电源线,并与相应的端口进行连接。", "请点击端子排左侧一组信号线,并与相应的端口进行连接。", "请点击端子排右侧一组24V电源线,并与相应的端口进行连接。", " 请点击端子排右侧一组0V电源线,并与相应的端口进行连接。", "请点击端子排右侧一组信号线,并与相应的端口进行连接。", }; /// /// 闪烁UI /// /// 是否是前视角的UI public void ShowRedImage(int index) { switch (index) { //前视角 case 0: Debug.Log("前显示"); GetWedage("Qian_N").GetComponent().interactable = true; //前RedImage显示 GetWedage("QianRedImage_N").gameObject.SetActive(true); GetWedage("QianRedImage_N").GetComponent().color = Color.white; GetWedage("HouRedImage_N").gameObject.SetActive(false); //动画 sequence = playRed(true).SetLoops(-1).Play(); //添加交互事件 GetWedage("Qian_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Hou_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Hou_N").GetComponent().interactable = false; GetWedage("Qian_N").GetComponent().onValueChanged.AddListener((ist) => { PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; _practiceAndExamCtrl.Set_ZNYD_Qian_View(); //切换视角后,设置当前端子闪烁 _practiceAndExamCtrl._connectLineCtrl.SetCurrentUIorCameraBool(); }); break; //前1视角 case 1: Debug.Log("前1显示"); GetWedage("Qian_N").GetComponent().interactable = true; //前RedImage显示 GetWedage("QianRedImage_N").gameObject.SetActive(true); GetWedage("QianRedImage_N").GetComponent().color = Color.white; GetWedage("HouRedImage_N").gameObject.SetActive(false); //动画 sequence = playRed(true).SetLoops(-1).Play(); //添加交互事件 GetWedage("Qian_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Hou_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Hou_N").GetComponent().interactable = false; GetWedage("Qian_N").GetComponent().onValueChanged.AddListener((ist) => { PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; _practiceAndExamCtrl.Set_ZNYD_Qian1_View(); //切换视角后,设置当前端子闪烁 _practiceAndExamCtrl._connectLineCtrl.SetCurrentUIorCameraBool(); }); break; //后视角 case 2: Debug.Log("后显示"); GetWedage("Hou_N").GetComponent().interactable = true; //后RedImage显示 GetWedage("HouRedImage_N").gameObject.SetActive(true); GetWedage("HouRedImage_N").GetComponent().color = Color.white; GetWedage("QianRedImage_N").gameObject.SetActive(false); //动画 sequence = playRed(false).SetLoops(-1).Play(); //添加交互事件 GetWedage("Qian_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Qian_N").GetComponent().interactable = false; GetWedage("Hou_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Hou_N").GetComponent().onValueChanged.AddListener((ist) => { PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; _practiceAndExamCtrl.Set_ZNYD_Hou_View(); //切换视角后,设置当前端子闪烁 _practiceAndExamCtrl._connectLineCtrl.SetCurrentUIorCameraBool(); }); break; //后1视角 case 3: Debug.Log("后1显示"); GetWedage("Hou_N").GetComponent().interactable = true; //后RedImage显示 GetWedage("HouRedImage_N").gameObject.SetActive(true); GetWedage("HouRedImage_N").GetComponent().color = Color.white; GetWedage("QianRedImage_N").gameObject.SetActive(false); //动画 sequence = playRed(false).SetLoops(-1).Play(); //添加交互事件 GetWedage("Qian_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Qian_N").GetComponent().interactable = false; GetWedage("Hou_N").GetComponent().onValueChanged.RemoveAllListeners(); GetWedage("Hou_N").GetComponent().onValueChanged.AddListener((ist) => { PracticeAndExamInSceneCtrl _practiceAndExamCtrl = UI_Manage.Instance.GetPanel("PracticeAndExamPanel") .GetComponent()._CurTrainExamSceneCtrl; _practiceAndExamCtrl.Set_ZNYD_Hou1_View(); //切换视角后,设置当前端子闪烁 _practiceAndExamCtrl._connectLineCtrl.SetCurrentUIorCameraBool(); }); break; } } //UI不闪烁 //隐藏,杀死动画 public void HideRedImage() { if (sequence != null) { sequence.Kill(); } //UI默认状态 GetWedage("QianRedImage_N").GetComponent().color = Color.white; GetWedage("HouRedImage_N").GetComponent().color = Color.white; GetWedage("QianRedImage_N").gameObject.SetActive(false); GetWedage("HouRedImage_N").gameObject.SetActive(false); } Sequence sequence; /// /// dotween动画播放 /// 是前边 /// /// public Sequence playRed(bool isQian) { //闪烁 Sequence quence = DOTween.Sequence(); if (isQian) { var v = GetWedage("QianRedImage_N").GetComponent().DOColor(Color.red, 0.25f); quence.Insert(0, v); v = GetWedage("QianRedImage_N").GetComponent().DOColor(Color.white, 0.25f); quence.Insert(0.25f, v); } else { var v = GetWedage("HouRedImage_N").GetComponent().DOColor(Color.red, 0.25f); quence.Insert(0, v); v = GetWedage("HouRedImage_N").GetComponent().DOColor(Color.white, 0.25f); quence.Insert(0.25f, v); } return quence; } /// /// 根据不同的类别显示不同的端子分配表 /// public void Switch_TerminalRefPop_N_Logic() { switch (AppManagement.Instance._CurType) { //循环搬运 case EnumCtrl.Type.XHBY: WDebug.Log("循环搬运"); AddEventListener("Terminal_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject TerminalRefGeo = GetWedage("XHBY_TerminalRefPop_N"); if (isOn) { TerminalRefGeo.SetActive(true); if (TerminalRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); TerminalRefGeo.AddComponent(type); } else { TerminalRefGeo.SetActive(false); } }); break; //气动冲压 case EnumCtrl.Type.QDCY: WDebug.Log("气动冲压"); AddEventListener("Terminal_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject TerminalRefGeo = GetWedage("QDCY_TerminalRefPop_N"); if (isOn) { TerminalRefGeo.SetActive(true); if (TerminalRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); TerminalRefGeo.AddComponent(type); } else { TerminalRefGeo.SetActive(false); } }); break; //材料分拣 case EnumCtrl.Type.CLFJ: WDebug.Log("材料分拣"); AddEventListener("Terminal_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject TerminalRefGeo = GetWedage("CLFJ_TerminalRefPop_N"); if (isOn) { TerminalRefGeo.SetActive(true); if (TerminalRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); TerminalRefGeo.AddComponent(type); } else { TerminalRefGeo.SetActive(false); } }); break; //智能运动 case EnumCtrl.Type.ZNYD: WDebug.Log("智能运动"); GetWedage("Terminal_N").gameObject.SetActive(false); GetWedage("LineImg_N").gameObject.SetActive(false); break; //搬运输送 case EnumCtrl.Type.BYSS: WDebug.Log("搬运输送"); AddEventListener("Terminal_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject TerminalRefGeo = GetWedage("BYSS_TerminalRefPop_N"); if (isOn) { TerminalRefGeo.SetActive(true); if (TerminalRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); TerminalRefGeo.AddComponent(type); } else { TerminalRefGeo.SetActive(false); } }); break; } } ///根据不同过的类别显示不同的接线图, //添加了关闭接线图,端子分配表UI功能 public void Switch_LineRefPop_N_Logic() { switch (AppManagement.Instance._CurType) { //循环搬运 case EnumCtrl.Type.XHBY: WDebug.Log("循环搬运"); AddEventListener("LineImg_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject LineRefGeo = GetWedage("XHBY_LineRefPop_N"); if (isOn) { LineRefGeo.SetActive(true); if (LineRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); LineRefGeo.AddComponent(type); } else { LineRefGeo.SetActive(false); } // ScrollRect sr = LineRefGeo.transform.GetComponentInChildren(); // sr.transform.GetChild(0).GetChild(0).GetChild(5).GetComponent().SetNativeSize(); }); AddEventListener("XHBY_TerminalCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("Terminal_N").GetComponent().isOn = false; }); AddEventListener("XHBY_LineCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("LineImg_N").GetComponent().isOn = false; }); break; //气动冲压 case EnumCtrl.Type.QDCY: WDebug.Log("气动冲压"); AddEventListener("LineImg_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject LineRefGeo = GetWedage("QDCY_LineRefPop_N"); if (isOn) { LineRefGeo.SetActive(true); if (LineRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); LineRefGeo.AddComponent(type); } else { LineRefGeo.SetActive(false); } }); AddEventListener("QDCY_TerminalCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("Terminal_N").GetComponent().isOn = false; }); AddEventListener("QDCY_LineCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("LineImg_N").GetComponent().isOn = false; }); break; //材料分拣 case EnumCtrl.Type.CLFJ: WDebug.Log("材料分拣"); AddEventListener("LineImg_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject LineRefGeo = GetWedage("CLFJ_LineRefPop_N"); if (isOn) { LineRefGeo.SetActive(true); if (LineRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); LineRefGeo.AddComponent(type); } else { LineRefGeo.SetActive(false); } }); AddEventListener("CLFJ_TerminalCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("Terminal_N").GetComponent().isOn = false; }); AddEventListener("CLFJ_LineCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("LineImg_N").GetComponent().isOn = false; }); break; //智能运动 case EnumCtrl.Type.ZNYD: WDebug.Log("智能运动"); GetWedage("Terminal_N").gameObject.SetActive(false); GetWedage("LineImg_N").gameObject.SetActive(false); // AddEventListener("TerminalCloseBtn_N", UIEventType.OnButtonClick, () => // { // GetWedage("Terminal_N").GetComponent().isOn = false; // }); // AddEventListener("LineCloseBtn_N", UIEventType.OnButtonClick, () => // { // GetWedage("LineImg_N").GetComponent().isOn = false; // }); break; //搬运输送 case EnumCtrl.Type.BYSS: WDebug.Log("搬运输送"); AddEventListener("LineImg_N", UIEventType.OnToggleValueChanged, (bool isOn) => { GameObject LineRefGeo = GetWedage("BYSS_LineRefPop_N"); if (isOn) { LineRefGeo.SetActive(true); if (LineRefGeo.GetComponent()) return; System.Type type = System.Type.GetType("ZXK.UTility.SampleUICtrl"); LineRefGeo.AddComponent(type); } else { LineRefGeo.SetActive(false); } }); AddEventListener("BYSS_TerminalCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("Terminal_N").GetComponent().isOn = false; }); AddEventListener("BYSS_LineCloseBtn_N", UIEventType.OnButtonClick, () => { GetWedage("LineImg_N").GetComponent().isOn = false; }); break; } } } }