using System; using System.Collections; using System.Collections.Generic; using GameFramework.Event; using UnityEngine; public class ObTrainStudyCtrl : 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((ObHardWaryType)i,this.transform.Find($"{(ObHardWaryType)i}Collider").GetComponent()); } foreach (var item in _colliderList.Values) { item.SetMeshEnable(false); } } void Start() { _learnTarget = false; GameMain.Event.Subscribe(Ob_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 "SXTCollider": _colliderList[ObHardWaryType.SXT].SetMeshEnable(true); GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.SXT)); break; case "MJCollider": _colliderList[ObHardWaryType.MJ].SetMeshEnable(true); GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.MJ)); break; case "YWBJQCollider": _colliderList[ObHardWaryType.YWBJQ].SetMeshEnable(true); GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.YWBJQ)); break; case "ZMCollider": _colliderList[ObHardWaryType.ZM].SetMeshEnable(true); GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.ZM)); break; case "UPSCollider": _colliderList[ObHardWaryType.UPS].SetMeshEnable(true); GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.UPS)); break; case "DHKZCollider": _colliderList[ObHardWaryType.DHKZ].SetMeshEnable(true); GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.DHKZ)); break; default: GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.none)); break; } } else { GameMain.Event.Fire(this, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.none)); } } } private void OnDestroy() { if (GameMain.Event.Check(Ob_StartLearnTargetInfoEvent.EventId, StartLearn)) { GameMain.Event.Unsubscribe(Ob_StartLearnTargetInfoEvent.EventId,StartLearn); } } private void StartLearn(object sender,GameEventArgs e) { Ob_StartLearnTargetInfoEvent args = (Ob_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, Ob_TrainStudyShowTargetInfoEvent.Create(ObHardWaryType.none)); } }