当前位置:网站首页>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方法,设置起始值和结束值。
边栏推荐
猜你喜欢
Feign如何针对单个服务屏蔽Hystrix熔断功能
Matlab的下载
“文化数字化战略新型基础设施暨文化艺术链生态建设发布会”成功召开
JQGrid通过json请求nodejs数据,表格信息保存在mysql数据库中
"New Infrastructure of Cultural Digital Strategy and Ecological Construction of Cultural Art Chain" was successfully held
深度学习-神经网络原理2
国产GPU大厂景嘉微半年净利润1.25亿元 旗下产品大卖
百度 IP 查询
DCM: 中间件家族迎来新成员
Oxylabs Webinar: Web Scraping Solutions in Action
随机推荐
pyspark resource configuration
二叉堆的建立
Real-time crawler example explanation
Move your office environment anywhere with a solid state USB drive
动手学深度学习_转置卷积
炒股开户去哪里办理,网上客户经理开户安全吗
Analysis of AutoAssign Papers
2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须
基于阿里云的基础架构设施保障(三)IAAS之网络运用
2020-03-09
买股票要选择哪家证券公司更好?网上客户经理开户安全吗
反向代理服务器能干什么?
爬虫系列:读取 CSV、PDF、Word 文档
爬虫系列:使用 MySQL 存储数据
Sentinel如何实现支持全局接口限流功能
pyspark资源配置
抖音开启“818发现好物节”:电商平台造节活动何时休
SRv6故障管理
Sql注入以及靶场演示
低佣金股票账户是怎么办理的?网上开户安全吗