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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|