89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using UnityEngine; | |||
|  | using UnityEngine.UI; | |||
|  | 
 | |||
|  | public class TextWithCountUpInfiniteFloat : Text { | |||
|  | 
 | |||
|  |     [SerializeField] | |||
|  |     private bool isFloat = true; | |||
|  |     [SerializeField] | |||
|  |     private bool isChineseNumerals = false; | |||
|  |     [SerializeField] | |||
|  |     private uint decimalCount = 1; | |||
|  |     [SerializeField] | |||
|  |     private int minUnitIndex = 3; | |||
|  | 
 | |||
|  | 	private InfiniteFloat value; | |||
|  |     private Coroutine coroutine; | |||
|  | 
 | |||
|  |     public void ChangeValue(string format, InfiniteFloat value){ | |||
|  | 		this.SafeStopCoroutine(coroutine); | |||
|  |         this.value = value; | |||
|  |         if(isFloat){ | |||
|  |             if(isChineseNumerals){ | |||
|  |                 text = string.Format(format, value.ToChineseNumerals()); | |||
|  |             }else{ | |||
|  |                 text = string.Format(format, value); | |||
|  |             } | |||
|  |         }else{ | |||
|  |             if(isChineseNumerals){ | |||
|  |                 text = string.Format(format, value.ToChineseNumeralsInt()); | |||
|  |             }else{ | |||
|  |                 text = string.Format(format, value.ToStringInt(decimalCount, minUnitIndex)); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     public void CountUpAnimation(string format, InfiniteFloat toValue, float duration){ | |||
|  | 		this.SafeStopCoroutine(coroutine); | |||
|  |         coroutine = _CountUpAnimation(format, value, toValue, duration); | |||
|  |     } | |||
|  | 
 | |||
|  |     private Coroutine _CountUpAnimation(string format, InfiniteFloat oldValue, InfiniteFloat toValue, float duration){ | |||
|  |         if(isFloat){ | |||
|  |             if(isChineseNumerals){ | |||
|  |                 if(gameObject.activeInHierarchy){ | |||
|  |                     return this.CallLerpSmooth(duration, t => { | |||
|  |                         value = InfiniteFloat.Lerp(oldValue, toValue, t); | |||
|  |                         text = string.Format(format, value.ToChineseNumerals()); | |||
|  |                     }); | |||
|  |                 }else{ | |||
|  |                     text = string.Format(format, toValue.ToChineseNumerals()); | |||
|  |                     return null; | |||
|  |                 } | |||
|  |             }else{ | |||
|  |                 if(gameObject.activeInHierarchy){ | |||
|  |                     return this.CallLerpSmooth(duration, t => { | |||
|  |                         value = InfiniteFloat.Lerp(oldValue, toValue, t); | |||
|  |                         text = string.Format(format, value); | |||
|  |                     }); | |||
|  |                 }else{ | |||
|  |                     text = string.Format(format, toValue); | |||
|  |                     return null; | |||
|  |                 } | |||
|  |             } | |||
|  |         }else{ | |||
|  |             if(isChineseNumerals){ | |||
|  |                 if(gameObject.activeInHierarchy){ | |||
|  |                     return this.CallLerpSmooth(duration, t => { | |||
|  |                         value = InfiniteFloat.Lerp(oldValue, toValue, t); | |||
|  |                         text = string.Format(format, value.ToChineseNumeralsInt()); | |||
|  |                     }); | |||
|  |                 }else{ | |||
|  |                     text = string.Format(format, toValue.ToChineseNumeralsInt()); | |||
|  |                     return null; | |||
|  |                 } | |||
|  |             }else{ | |||
|  |                 if(gameObject.activeInHierarchy){ | |||
|  |                     return this.CallLerpSmooth(duration, t => { | |||
|  |                         value = InfiniteFloat.Lerp(oldValue, toValue, t); | |||
|  |                         text = string.Format(format, value.ToStringInt(decimalCount, minUnitIndex)); | |||
|  |                     }); | |||
|  |                 }else{ | |||
|  |                     text = string.Format(format, toValue.ToStringInt(decimalCount, minUnitIndex)); | |||
|  |                     return null; | |||
|  |                 } | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | } |