赞
踩
最近的项目需要动态显示数字,所以使用Text组件,将数字进行变化操作过程记录下来。
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。
在 ChangeType 枚举中定义了三种变化速度的类型:
Linear 表示线性变化,即变化速度保持恒定。
EaseIn 表示先慢后快的变化方式。
EaseOut 表示先快后慢的变化方式
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,//先快后慢 }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。