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