协程
- 执行方法:同步执行(不会阻挡当前方法的执行);运行过程中自身可以暂停
普通执行协程执行
-
Coroutines规则
返回值是IEnumerator;
返回参数的时候使用yield return null/0;
协程方法的调用StartCoroutine(method()) -
StopAllCoroutines:停止所有协程
StopCoroutine:停止一个指定的协程
注:开启协程和关闭协程相对应,如果开启协程使用方法名,则关闭协程的时候使用方法名(字符串);如果开启的时候使用方法的调用,则关闭的时候也需使用
测试代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API08Coroutine : MonoBehaviour {
public GameObject cube;
void Start () {
//print("haha");
ChangeColor();
//StartCoroutine(ChangeColor());
协程方法开启后,会继续运行下面的代码,不会等协程方法运行结束才继续执行
//print("hahaha");
}
private IEnumerator ie;
void Update () {
if (Input.GetKeyDown(KeyCode.Space))
{
//ie = Fade();
//StartCoroutine(ie);
StartCoroutine("Fade");
}//判断某个键的按下,协程开启
if(Input.GetKeyDown(KeyCode.S))
{
//StopCoroutine(ie);
StopCoroutine("Fade");
}//按下某个键,协程暂停
}
//IEnumerator Fade()
//{
// for(float i=0;i<=1;i+=0.1f)//i代表颜色
// {
// cube.GetComponent<MeshRenderer>().material.color = new Color(i, i, i, i);
// yield return new WaitForSeconds(0.1f);
// }
//}
IEnumerator Fade()
{
for (; ; )
{
Color color = cube.GetComponent<