|  |  |  | 
|---|
|  |  |  | using UnityEngine; | 
|---|
|  |  |  | using UnityEngine.UI; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace vnxbqy.UI { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | [RequireComponent(typeof(Text))] | 
|---|
|  |  |  | public class RollNumber:MonoBehaviour { | 
|---|
|  |  |  | [RequireComponent(typeof(Text))] | 
|---|
|  |  |  | public class RollNumber:MonoBehaviour { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | [SerializeField] | 
|---|
|  |  |  | Text m_Text; | 
|---|
|  |  |  | public Text text { | 
|---|
|  |  |  | get { | 
|---|
|  |  |  | return m_Text; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | [SerializeField] | 
|---|
|  |  |  | Text m_Text; | 
|---|
|  |  |  | public Text text { | 
|---|
|  |  |  | get { | 
|---|
|  |  |  | return m_Text; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | float to = 0; | 
|---|
|  |  |  | float from = 0; | 
|---|
|  |  |  | float now = 0; | 
|---|
|  |  |  | float to = 0; | 
|---|
|  |  |  | float from = 0; | 
|---|
|  |  |  | float now = 0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | float duration = 0f; | 
|---|
|  |  |  | float timer = 0f; | 
|---|
|  |  |  | Action endCallBack = null; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void ResetTimer() { | 
|---|
|  |  |  | timer = 0f; | 
|---|
|  |  |  | duration = 0f; | 
|---|
|  |  |  | if(text != null) { | 
|---|
|  |  |  | var nowInt = (int)now; | 
|---|
|  |  |  | text.text = nowInt.ToString(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void ResetTimer() { | 
|---|
|  |  |  | timer = 0f; | 
|---|
|  |  |  | duration = 0f; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|