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); 
 | 
    } 
 | 
  
 | 
} 
 |