using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; /// /// 进度条功能,带有+-按钮控制,最大数量按钮 /// public class SliderPanel : MonoBehaviour { [SerializeField] Text countText; [SerializeField] Slider slider; [SerializeField] LongPressButton addBtn; [SerializeField] LongPressButton decBtn; [SerializeField] ButtonEx maxBtn; int count; int maxCount; Action 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 _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); } }