using System; using UnityEngine; using UnityEngine.UI; [RequireComponent(typeof(Text))] public class RollNumber:MonoBehaviour { [SerializeField] Text m_Text; public Text text { get { return m_Text; } } float to = 0; float from = 0; float now = 0; float duration = 0f; float timer = 0f; Action endCallBack = null; public void Perform(int _from,int _to,float _duration,Action _callBack) { ResetTimer(); duration = Mathf.Clamp(_duration,0f,float.MaxValue); from = _from; to = _to; endCallBack = _callBack; } private void LateUpdate() { if(timer < duration) { timer += Time.deltaTime; now = Mathf.Lerp(from,to,Mathf.Clamp01(timer / duration)); if(timer > duration) { ResetTimer(); now = to; if(endCallBack != null) { endCallBack(); endCallBack = null; } } if(text != null) { var nowInt = (int)now; text.text = nowInt.ToString(); } } } private void ResetTimer() { timer = 0f; duration = 0f; } }