Files
tcg-client/Assets/TcgEngine/Scripts/UI/NumberSelector.cs
yaoyanwei 2f2a601227 init
2025-08-04 16:45:48 +08:00

89 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using TcgEngine;
namespace TcgEngine.UI
{
/// <summary>
/// Select a value between min and max
/// </summary>
public class NumberSelector : MonoBehaviour
{
[Header("Options")]
public int value;
public int value_min;
public int value_max;
[Header("Display")]
public Text select_text;
public UnityAction onChange;
private bool is_locked = false;
void Start()
{
SetValue(0);
}
void Update()
{
}
private void AfterChangeOption()
{
if (select_text != null)
select_text.text = value.ToString();
onChange?.Invoke();
}
public void OnClickLeft()
{
if (is_locked)
return;
value--;
value = Mathf.Clamp(value, value_min, value_max);
AfterChangeOption();
}
public void OnClickRight()
{
if (is_locked)
return;
value++;
value = Mathf.Clamp(value, value_min, value_max);
AfterChangeOption();
}
public void SetValue(int val)
{
value = Mathf.Clamp(val, value_min, value_max);
if (select_text != null)
select_text.text = value.ToString();
}
public void SetMin(int min)
{
value_min = min;
}
public void SetMax(int max)
{
value_max = max;
}
public void SetLocked(bool locked)
{
is_locked = locked;
}
}
}