Unity3D 数字逐渐增加,一个数字动态变化到另一个数字(使用协程)

时间:2024-04-06 12:42:03

目录

协程

逐渐增加的实现


首先实现上述功能,需要使用“协程”这个功能。

协程

协程:控制代码等到特定的时机后再执行后续步骤.

先看Unity3D的函数执行顺序图

Unity3D 数字逐渐增加,一个数字动态变化到另一个数字(使用协程)

官网链接:https://docs.unity3d.com/Manual/ExecutionOrder.html

以上协程函数定义:(yield 开头的便是)

yield null:协程将在下一帧所有脚本的Update执行之后,再继续执行. 
yield WaitForSeconds:协程在延迟指定时间,且当前帧所有脚本的 Update全都执行结束后才继续执行. 
yield WaitForFixedUpdate:协程在所有脚本的FixedUpdate执行之后,再继续执行. 
yield WWW:协程在WWW下载资源完成后,再继续执行. 
yield StartCoroutine:协程在指定协程执行结束后,再继续执行. 
WaitForSecondsRealtime:与WaitForSeconds类似,但不受时间缩放影响. 
WaitWhile:当返回条件为假时才执行后续步骤.

使用方法:

  void Start () {
        StartCoroutine(A());
    }

   IEnumerator A()   //加粗的必须要写,函数名自己定义
    {   
        //yield return new WaitForSeconds(0.1f);   //这里可以用上述的函数
        StopCoroutine(A());
    }

PS:注意如果需要停停止其中某个协程,可使用StopCoroutine。但在使用时,你需要注意一点,停止协程的方式要与开启协程的方式一致。StopCoroutine(“A”)必须与StartCoroutine(“A”)成对使用,与StartCoroutine(A())一起使用则完全无效。

 

逐渐增加的实现

首先需要在unity世界里增加一个text,然后text加如下脚本

Unity3D 数字逐渐增加,一个数字动态变化到另一个数字(使用协程)

代码如下:

 int max;  //最终值

 int min;   //初始值
 int result = 0;
 public int change_speed = 5; //速度
    
// Use this for initialization
void Start () 
{
   StartCoroutine(Change());
}
 IEnumerator Change()
    {
        int delta = (max - min) / change_speed;   //delta为一个常数,每次加的数大小

        result = min;

        for(int i = 0;i<change_speed;i++)
        {
            result += delta;
            this.GetComponent<Text>().text = result.ToString();
            yield return new WaitForSeconds(0.1f);     //每 0.1s 加一次
        }
        this.GetComponent<Text>().text = max.ToString();
        StopCoroutine(Change());
    }

 

.