实现打字机功能:字出现之间会有时差,让一个字接一个字出现。
回圈{
//画面texe += 清单[第一件][第几个字]
ui.text += textList[textIndex][letter];
letter++;
时间差;
}
要在unity中制造时间差,除了Timer.deltaTime就是使用Coroutine协程搭配WaitForSeconds()!
可以将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++;
}
从Sprite_Damage开始 写一个方法 接着是Sprite_Character 在Action...
有鉴於Junior Programmer: Manage scene flow and data课程...
Http 使用 Http 通讯协定,发送网路请求存取网路上的资源在开发App是很基本的需求,今日我们...
大家好,我是来自台北教育大学玩游所的硕士生 May,在大学接触到如何写网页後,就毅然踏入了前端这个大...
前言 闭包的观念,其实就和前几天谈到的作用域、变数宣告和作用域的观念有关。只要有清楚知道其中差异,在...