using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Coroutine : MonoBehaviour
{
public GameObject cube;
// Use this for initialization
void Start()
{
print("S1");
//ChangeColor();
StartCoroutine(ChangeColor());
for (int i = 1000; i > 0; i--)
{
print(i);
}
print("S2");
}
//协同Coroutines
//返回值:IEnumerator
// yield return 返回 null/0;
//StartCoroutine 调用协程方法
IEnumerator ChangeColor()
{
print("cc1");
cube.GetComponent<MeshRenderer>().material.color = Color.cyan;
yield return new WaitForSeconds(5); //中间等待5秒后继续
for (int i = 0; i < 1000; i++)
{
print(i);
}
print("cc2");
yield return null;
}
using System.Collections.Generic;
using UnityEngine;
public class Coroutine : MonoBehaviour
{
public GameObject cube;
// Use this for initialization
void Start()
{
print("S1");
//ChangeColor();
StartCoroutine(ChangeColor());
for (int i = 1000; i > 0; i--)
{
print(i);
}
print("S2");
}
//协同Coroutines
//返回值:IEnumerator
// yield return 返回 null/0;
//StartCoroutine 调用协程方法
IEnumerator ChangeColor()
{
print("cc1");
cube.GetComponent<MeshRenderer>().material.color = Color.cyan;
yield return new WaitForSeconds(5); //中间等待5秒后继续
for (int i = 0; i < 1000; i++)
{
print(i);
}
print("cc2");
yield return null;
}
}
测试结果显示,协程进行时,以代码块为结构运行。
for循环是运行完一个后才运行下一个,而不是交叉输出两个for的结果
所以协程并非多线程