当前位置:   article > 正文

Unity实现动态数字变化_unity text数字控制

unity text数字控制

最近的项目需要动态显示数字,所以使用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,//先快后慢
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

2、效果展示

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/496809
推荐阅读
相关标签
  

闽ICP备14008679号