最近的项目需要动态显示数字,所以使用Text组件,将数字进行变化操作过程记录下来。
一、UI准备
1、新建一个Text组件
2、新建C#脚本
3、将Text挂载到脚本上
二、函数说明
1、NumberChange 方法
NumberChange 方法接收四个参数:初始数字 initNum,显示的数字 showNum(即结果),目标数字 targetNum,以及一个表示变化速度的参数 v。此外,还有一个可选参数 changeType,用于指定变化类型,默认为线性变化。
根据 changeType 的值,使用 switch 语句进行不同类型的处理:
如果 changeType 是 Linear,则采用线性变化方式。计算出变化量 (targetNum - initNum) * Time.deltaTime / v,将其累加到 showNum 上。如果 showNum 超过或等于 targetNum,则将其设为 targetNum。最后返回 showNum。
如果 changeType 是 EaseIn,则直接返回 showNum,表示没有变化。
如果 changeType 是 EaseOut,采用先快后慢的变化方式。计算出变化量 (targetNum - showNum) * Time.deltaTime / v,将其累加到 showNum 上,然后返回 showNum。
3、ChangeType 方法
在 ChangeType 枚举中定义了三种变化速度的类型:
Linear 表示线性变化,即变化速度保持恒定。
EaseIn 表示先慢后快的变化方式。
EaseOut 表示先快后慢的变化方式
三、项目展示
1、源码展示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class NUMdd : MonoBehaviour
{/// <summary>/// 数字变化/// </summary>/// <param name="initNum">初始数字</param>/// <param name="showNum">显示的数字(结果)</param>/// <param name="targetNum">目标数字</param>/// <param name="v">Linear:时间 EaseOut:比例值</param>/// <param name="changeType">变化类型</param>public Text numberText;public float changeSpeed = 1.0f;public ChangeType changeType = ChangeType.Linear;double initNum = 0.0;double showNum = 0.0;double targetNum = 100.0;void Update(){// 调用 NumberChange 方法计算数字变化showNum = NumberChange(initNum, showNum, targetNum, changeSpeed, changeType);// 更新 UI 显示numberText.text = showNum.ToString();}// NumberChange 方法public static double NumberChange(double initNum, double showNum, double targetNum, float v, ChangeType changeType = ChangeType.Linear){switch (changeType){case ChangeType.Linear:showNum += (targetNum - initNum) * Time.deltaTime / v;if (showNum >= targetNum){showNum = targetNum;}return showNum;case ChangeType.EaseIn:return showNum;case ChangeType.EaseOut:showNum += (targetNum - showNum) * Time.deltaTime / v;return showNum;default:return 0;}}}
/// <summary>
/// 数字变化
/// </summary>
public enum ChangeType
{Linear,//线性EaseIn,//先慢后快EaseOut,//先快后慢
}