| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 | | 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; |  |     } |  | } | 
 |