26.unity打字机(StartCoroutine)

实现打字机功能:字出现之间会有时差,让一个字接一个字出现。

回圈{

	 //画面texe += 清单[第一件][第几个字]
	ui.text += textList[textIndex][letter];
	letter++;
	时间差;

}

要在unity中制造时间差,除了Timer.deltaTime就是使用Coroutine协程搭配WaitForSeconds()!

Coroutine协程(参考手册)

可以将Coroutine协程当作一个突发事件,能够在不影响主程序的情况下执行一段程序码,等待秒数或完成条件之後才继续往下执行程序码。

在unity中要开始一个协程(Starts a Coroutine),使用StartCoroutine()

宣告定义

public Coroutine StartCoroutine(IEnumerator routine);

使用方式

写一个IEnumerator 方法(),里面必须包含yield return,yield return会告诉主线程序继续执行主线程序。

IEnumerator 方法名称()
{
	//执行事情(主程序继续执行前)
	//程序执行到yield return时会继续在主程序中执行
	yield return new WaitForSeconds(秒数);
	//不一定要回传等待秒数,也可以是null或数字或其他条件形式。
	//执行事情(主程序继续执行後)
}

官方案例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(coroutineA());
    }

    IEnumerator coroutineA()
    {
        // wait for 1 second
        Debug.Log("coroutineA created");
        yield return new WaitForSeconds(1.0f);
        yield return StartCoroutine(coroutineB());
        Debug.Log("coroutineA running again");
    }

    IEnumerator coroutineB()
    {
        Debug.Log("coroutineB created");
        yield return new WaitForSeconds(2.5f);
        Debug.Log("coroutineB enables coroutineA to run");
    }
}

打字机

IEnumerator SetTextUI()
    {
        int letter = 0;
        while(!cancelTyping && letter < textList[textIndex].Length -1)
        {
            uiText.text += textList[textIndex][letter];
            letter++;
            yield return new WaitForSeconds(textSpeed);
        }
        uiText.text = textList[textIndex];
        cancelTyping = false;
        textFinished = true;
        textIndex++;
        
    }

<<:  Basic Customization

>>:  DAY26 进行式--工作日志001

[Day14] 动画篇 - 伤害动画

从Sprite_Damage开始 写一个方法 接着是Sprite_Character 在Action...

Day 11. 来学习如何切换场景!2

有鉴於Junior Programmer: Manage scene flow and data课程...

Flutter体验 Day 21-Http

Http 使用 Http 通讯协定,发送网路请求存取网路上的资源在开发App是很基本的需求,今日我们...

[Day 01] 前言

大家好,我是来自台北教育大学玩游所的硕士生 May,在大学接触到如何写网页後,就毅然踏入了前端这个大...

[Day 21] 闭包 (Closure)是什麽?

前言 闭包的观念,其实就和前几天谈到的作用域、变数宣告和作用域的观念有关。只要有清楚知道其中差异,在...