当前位置:网站首页>Unity Text值递增或递减效果
Unity Text值递增或递减效果
2022-08-08 22:07:00 【w0100746363】
public class TextValueChange : MonoBehaviour
{
[SerializeField]
private Text text;
[SerializeField]
private float time = 0;//改变的总时间
[SerializeField]
private long count = 0;//改变总次数
private bool isStart = false;
private long endValue;//最终筹码
private long currentValue;//当前筹码
private long step;//改变的步长
private float perTime;//多久变动一次
private long changeCount;//当前改变的次数
private bool isAdd = true;//是否增加
public System.Action FinishChangeEvent;
private void Start()
{
StartChange(1000, 100);
}
// Update is called once per frame
void Update()
{
if (isStart)
{
if (perTime >= time / count)
{
perTime = 0;
changeCount++;
//增加
if (isAdd)
{
currentValue += step;
//大于等于目标,结束改变
if (currentValue >= endValue)
{
currentValue = endValue;
isStart = false;
Finish();
changeCount = 0;
}
}
else
{
currentValue -= step;
//小于等于目标,结束改变
if (currentValue <= endValue)
{
currentValue = endValue;
isStart = false;
Finish();
changeCount = 0;
}
}
//改变次数达到总次数,结束改变
if (changeCount >= count)
{
currentValue = endValue;
isStart = false;
Finish();
changeCount = 0;
}
SetTextValue(currentValue);
}
else
{
perTime += Time.deltaTime;
}
}
}
private void SetTextValue(long value)
{
text.text = value.ToString();
}
//设置最终值
public void SetEndValue(long value)
{
endValue = value;
}
//设置起始和结束值,start>end增加,start>end减小
public void StartChange(long start, long end)
{
//获取当前值
currentValue = start;
endValue = end;
long valueLen = 0;//改变的差值
if (currentValue > endValue)
{
valueLen = currentValue - endValue;
isAdd = false;
}
else if (currentValue < endValue)
{
valueLen = endValue - currentValue;
isAdd = true;
}
else
{
SetTextValue(end);
}
long temp;
if (count <= changeCount)
{
temp = valueLen;
}
else
{
temp = valueLen / (count - changeCount);
}
if (temp == 0)
{
temp = 1;
}
step = temp;
isStart = true;
}
public bool GetState()
{
return isStart;
}
void Finish()
{
FinishChangeEvent?.Invoke();
}
private void OnDestroy()
{
FinishChangeEvent = null;
}
}把脚本挂到组件上,设置改变时间和次数,调用StartChange方法,设置起始值和结束值。
边栏推荐
猜你喜欢
随机推荐
浦东AI时代 | 零数科技完成重点项目签约
零数科技受邀出席2019全球未来出行大会
主机测探与端口扫描
What can a reverse proxy server do?
What is the cURL?
远程调试为何要亲历现场,也许也可以这样解决
爬虫系列:存储媒体文件
炒股开户去哪里办理,网上客户经理开户安全吗
2020-03-09
SaaS启动阶段增长指南(上)
software design principles
给定二叉搜索树和两个整数A,B (最小整数和最大整数)。如何删除不在该区间内的元素(剪枝)
Sql注入以及靶场演示
一个英文字母,一个中文各占多少字节
n皇后求解单一解问题
九大内置对象,四大作用域
mysql 忘记root密码后 ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
17 [2D conversion 3D conversion browser private prefix]
2020-03-09
cURL是什么?









