using System; using System.Collections; using System.Collections.Generic; using GameFramework.Event; using UnityEngine; public class EleTrainStudyCtrl : MonoBehaviour { private Ray _ray; private RaycastHit _raycastHit; public bool _learnTarget = false; private Dictionary _colliderList; private void Awake() { _colliderList = new Dictionary(); for (int i = 1; i < 7; i++) { _colliderList.Add((EleHardWaryType)i,this.transform.Find($"{(EleHardWaryType)i}Collider").GetComponent()); } foreach (var item in _colliderList.Values) { item.SetMeshEnable(false); } } void Start() { _learnTarget = false; GameMain.Event.Subscribe(Ele_StartLearnTargetInfoEvent.EventId,StartLearn); } // Update is called once per frame void Update() { if (_learnTarget) { foreach (var item in _colliderList.Values) { item.SetMeshEnable(false); } _ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(_ray,out _raycastHit)) { switch (_raycastHit.collider.gameObject.name) { case "PDGCollider": _colliderList[EleHardWaryType.PDG].SetMeshEnable(true); GameMain.Event.Fire(this,Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.PDG)); break; case "DCGCollider": _colliderList[EleHardWaryType.DCG].SetMeshEnable(true); GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.DCG)); break; case "PDXCollider": _colliderList[EleHardWaryType.PDX].SetMeshEnable(true); GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.PDX)); break; case "YJPCollider": _colliderList[EleHardWaryType.YJP].SetMeshEnable(true); GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.YJP)); break; case "UPSCollider": _colliderList[EleHardWaryType.UPS].SetMeshEnable(true); GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.UPS)); break; case "DCCollider": _colliderList[EleHardWaryType.DC].SetMeshEnable(true); GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.DC)); break; default: GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.none)); break; } } else { GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.none)); } } } private void OnDestroy() { if (GameMain.Event.Check(Ele_StartLearnTargetInfoEvent.EventId, StartLearn)) { GameMain.Event.Unsubscribe(Ele_StartLearnTargetInfoEvent.EventId,StartLearn); } } private void StartLearn(object sender,GameEventArgs e) { Ele_StartLearnTargetInfoEvent args = (Ele_StartLearnTargetInfoEvent)e; _learnTarget = args.start; } private void ReStartTrain(object sender,GameEventArgs e) { foreach (var item in _colliderList.Values) { item.SetMeshEnable(false); } GameMain.Event.Fire(this, Ele_TrainStudyShowTargetInfoEvent.Create(EleHardWaryType.none)); } }