using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class TrainingDeviceItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler { /// /// 当前选中的设备选项 /// public static TrainingDeviceItem SelectedItem; /// /// 所有的设备选项 /// public static List TrainingDeviceItemList = new List(); /// /// 鼠标悬浮状态背景 /// public Image SelectedBackground; /// /// 选中状态 /// public Image SelectedStatus; /// /// 设备图片 /// public Image DeviceIcon; /// /// 训练数据 /// public TrainingDeviceData TrainingDeviceData; public void Init(TrainingDeviceData data, Sprite _sprite) { TrainingDeviceData = data; if (!TrainingDeviceItemList.Contains(this)) TrainingDeviceItemList.Add(this); if (_sprite != null) { DeviceIcon.sprite = _sprite; } } public void OnPointerClick(PointerEventData eventData) { //未选设备时禁止选择选项 if (DeviceItem.SelectedItem == null) return; if (SelectedItem != null) { //已选中再次点击取消选中 if (SelectedItem == this) { SelectedItem.SetSelectStatus(false); SelectedItem = null; } else { SelectedItem.SetSelectStatus(false); if (SelectedItem != this) SelectedItem.SelectedBackground.gameObject.SetActive(false); SelectedItem = this; SetSelectStatus(true); } } else { SelectedItem = this; SetSelectStatus(true); } } public void OnPointerEnter(PointerEventData eventData) { if (SelectedItem != this) SelectedBackground.gameObject.SetActive(true); } public void OnPointerExit(PointerEventData eventData) { if (SelectedItem != this) SelectedBackground.gameObject.SetActive(false); } /// /// 改变选中状态 /// /// 是否选中 /// 是否强制执行 public void SetSelectStatus(bool selected, bool force = false) { SelectedStatus.gameObject.SetActive(selected); if (force) { SelectedBackground.gameObject.SetActive(selected); SelectedItem = selected ? this : null; } else { DeviceItem.SelectedItem.DevicesItemData._select_sprite = DeviceIcon.sprite; TrainingManager.Instance.UpdateSelectItem(selected ? TrainingDeviceData.id : ""); } } }