using System; using System.Collections; using System.Collections.Generic; using GameFramework.Event; using UnityEngine; public class NetTrainStudyCtrl : 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 < 4; i++) { _colliderList.Add((NetHardWaryType)i,this.transform.Find($"{(NetHardWaryType)i}Collider").GetComponent()); } foreach (var item in _colliderList.Values) { item.SetMeshEnable(false); } } void Start() { _learnTarget = false; GameMain.Event.Subscribe(Net_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 "LYQCollider": _colliderList[NetHardWaryType.LYQ].SetMeshEnable(true); GameMain.Event.Fire(this, Net_TrainStudyShowTargetInfoEvent.Create(NetHardWaryType.LYQ)); break; case "JHJCollider": _colliderList[NetHardWaryType.JHJ].SetMeshEnable(true); GameMain.Event.Fire(this, Net_TrainStudyShowTargetInfoEvent.Create(NetHardWaryType.JHJ)); break; case "FWQCollider": _colliderList[NetHardWaryType.FWQ].SetMeshEnable(true); GameMain.Event.Fire(this,Net_TrainStudyShowTargetInfoEvent.Create(NetHardWaryType.FWQ)); break; default: GameMain.Event.Fire(this, Net_TrainStudyShowTargetInfoEvent.Create(NetHardWaryType.none)); break; } } else { GameMain.Event.Fire(this, Net_TrainStudyShowTargetInfoEvent.Create(NetHardWaryType.none)); } } } private void OnDestroy() { if (GameMain.Event.Check(Net_StartLearnTargetInfoEvent.EventId, StartLearn)) { GameMain.Event.Unsubscribe(Net_StartLearnTargetInfoEvent.EventId,StartLearn); } } private void StartLearn(object sender,GameEventArgs e) { Net_StartLearnTargetInfoEvent args = (Net_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, Net_TrainStudyShowTargetInfoEvent.Create(NetHardWaryType.none)); } }