| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
| using System; | 
|   | 
| /// <summary> | 
| /// 进度条功能,带有+-按钮控制,最大数量按钮 | 
| /// </summary> | 
| public class SliderPanel : MonoBehaviour | 
| { | 
|     [SerializeField] Text countText; | 
|     [SerializeField] Slider slider; | 
|     [SerializeField] LongPressButton addBtn; | 
|     [SerializeField] LongPressButton decBtn; | 
|     [SerializeField] ButtonEx maxBtn; | 
|   | 
|     int count; | 
|     int maxCount; | 
|   | 
|     Action<int> OnChangeEvent; | 
|     void Start() | 
|     { | 
|         slider.AddListener((value) => { Refresh(); }); | 
|         addBtn.AddListener(() => | 
|         { | 
|             slider.value += 1; | 
|             Refresh(); | 
|         }); | 
|         addBtn.onPress.AddListener(() => | 
|         { | 
|             slider.value += 1; | 
|             Refresh(); | 
|         }); | 
|         decBtn.AddListener(() => | 
|         { | 
|             slider.value -= 1; | 
|             Refresh(); | 
|         }); | 
|         decBtn.onPress.AddListener(() => | 
|         { | 
|             slider.value -= 1; | 
|             Refresh(); | 
|         }); | 
|   | 
|         maxBtn.AddListener(() => | 
|         { | 
|             slider.value = slider.maxValue; | 
|             Refresh(); | 
|         }); | 
|     } | 
|   | 
|     public void Init(Action<int> _OnChangeEvent, int _maxCount, int _count = 1) | 
|     { | 
|         count = _count; | 
|         maxCount = _maxCount; | 
|         slider.minValue = 1; | 
|         slider.maxValue = _maxCount; | 
|         slider.value = count; | 
|   | 
|         Refresh(); | 
|         OnChangeEvent = _OnChangeEvent; | 
|   | 
|     } | 
|   | 
|     void Refresh() | 
|     { | 
|         count = (int)slider.value; | 
|         countText.text = count.ToString(); | 
|         if (count >= maxCount) | 
|         { | 
|             addBtn.interactable = false; | 
|             addBtn.SetColorful(null, false); | 
|             maxBtn.interactable = false; | 
|             maxBtn.SetColorful(null, false); | 
|         } | 
|         else | 
|         { | 
|             addBtn.interactable = true; | 
|             addBtn.SetColorful(null, true); | 
|             maxBtn.interactable = true; | 
|             maxBtn.SetColorful(null, true); | 
|         } | 
|   | 
|         if (count <= 0) | 
|         { | 
|             decBtn.interactable = false; | 
|             decBtn.SetColorful(null, false); | 
|         } | 
|         else | 
|         { | 
|             decBtn.interactable = true; | 
|             decBtn.SetColorful(null, true); | 
|         } | 
|   | 
|         OnChangeEvent?.Invoke(count); | 
|     } | 
|   | 
| } |