using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using UnityEngine; public class ChangeObjMat : MonoBehaviour { public Material m_TM; public List m_RendererList; private List> m_RecordRendererList = new List>(); /// /// 车辆物体 /// public GameObject m_Obj; /// /// 车辆线框 /// public GameObject m_XKObj; /// /// 车牌扫描 /// public GameObject m_CPObj; /// /// 车身扫描 /// public GameObject m_CSSMObj; void Start() { m_RendererList = GetComponentsInChildren().ToList(); m_RecordRendererList.Clear(); for (int i = 0; i < m_RendererList.Count; i++) { m_RecordRendererList.Add(m_RendererList[i].materials.ToList()); } Bootstrap.Instance.eventCenter.AddEventListener(Enum_EventType.ChangeChildrenMat, ChangeChildrenMat); Bootstrap.Instance.eventCenter.AddEventListener(Enum_EventType.StepSwitching, StepSwitching); ChangeChildrenMat(true); } public void ChangeChildrenMat(bool Change) { if (Change) { for (int i = 0; i < m_RendererList.Count; i++) { int len = m_RendererList[i].materials.Length; Material[] matArr = new Material[len]; for (int j = 0; j < len; j++) { matArr[j] = m_TM; } for (int j = 0; j < len; j++) { m_RendererList[i].materials = matArr; } } } else { for (int i = 0; i < m_RecordRendererList.Count; i++) { List materialList = m_RecordRendererList[i]; m_RendererList[i].materials = materialList.ToArray(); } } } public async void StepSwitching() { Debug.Log($"StepSwitching"); #region 车牌识别 await Task.Delay(3000); Bootstrap.Instance.eventCenter.EventTrigger(Enum_EventType.AudioPlay, $"车牌识别"); m_XKObj.SetActive(true); m_CPObj.SetActive(true); m_Obj.SetActive(false); await Task.Delay(5000); m_CPObj.SetActive(false); if (Bootstrap.UIMgr != null) Bootstrap.UIMgr.ShowPanel(this, E_UI_Layer.System, (p) => { p.Init($"检测到车牌号为"+ GetawayMqttClient.licensePlateData.LicensePlateNumber + "!", 5); }); await Task.Delay(5000); #endregion #region 车身外观检测 if (Bootstrap.UIMgr != null) Bootstrap.UIMgr.ShowPanel(this, E_UI_Layer.System, (p) => { p.Init($"现在进入车身外观检测环节1.深度检测已开始!", 5); }); await Task.Delay(5000); Bootstrap.Instance.eventCenter.EventTrigger(Enum_EventType.AudioPlay, $"车身外观检测"); if (Bootstrap.UIMgr != null) Bootstrap.UIMgr.ShowPanel(this, E_UI_Layer.System, (p) => { p.Init($"2.车外观检测开始!", 3); }); await Task.Delay(3000); if (Bootstrap.UIMgr != null) Bootstrap.UIMgr.ShowPanel(this, E_UI_Layer.System, (p) => { p.Init($"3.您的爱车正进行车外观检测...", 10); }); m_CSSMObj.SetActive(true); await Task.Delay(10000); m_CSSMObj.SetActive(false); if (Bootstrap.UIMgr != null) Bootstrap.UIMgr.ShowPanel(this, E_UI_Layer.System, (p) => { p.Init($"3.您的爱车正进行车外观检测...", 5); }); await Task.Delay(5000); #endregion } private void OnDisable() { if (Bootstrap.Instance != null) { Bootstrap.Instance.eventCenter.RemoveEventListener(Enum_EventType.ChangeChildrenMat, ChangeChildrenMat); Bootstrap.Instance.eventCenter.RemoveEventListener(Enum_EventType.StepSwitching, StepSwitching); } } }