本节要点
1.协同程序简介 1.什么是协同程序 协同程序,简称“协程”。在脚本运行过程中,需要额外的执行一些其他的代码, 这个时候就可以将“其他的代码”以协程的形式来运行。 类似于开启了一个线程,但是协程不是线程。 2.协同程序的使用前提 只有在继承了“MonoBehaviour”这个类的子类中才能使用相关的协程方法。 2.协同程序语法格式 1.定义协同程序 协同程序就是一个“代码片段”,往往我们需要将这个代码片段封装成一个方法, 或者称之为函数。 IEnumerator Task3() { yield return new WaitForSeconds (2); Debug.Log ("任务 3"); } 参数说明: IEnumerator:协同程序的返回值类型; yield return:协同程序返回 xxxxx; new WaitForSeconds (秒数):实例化一个对象,等待多少秒后继续执行。 这个 Task3()的作用就是等待两秒后,继续执行任务 3. 2.开启协同程序 StartCoroutine(“协同程序方法名”); 这个 StartCoroutine 有三种重载形式,目前先只介绍这一种。 3.停止协同程序 StopCoroutine(“协同程序方法名”); 这个 StopCoroutine 也有三种重载形式,目前先只介绍这一种。
关键代码
CoroutinTest
public class CoroutinTest : MonoBehaviour { // Use this for initialization void Start () { //普通程序 从上往下执行; //Debug.Log("任务1"); //Debug.Log("任务2"); //Debug.Log("任务3"); //Debug.Log("任务4"); //协同程序 Debug.Log("任务1"); Debug.Log("任务2"); //Task3();//不是这样调用协同程序的 StartCoroutine("Task3");//开启协程; 跟之前线程不同的是 这是字符串的方法名 Debug.Log("任务4"); } IEnumerator Task3() {//要注意协同程序返回值类型 //等待两秒后执行; yield return new WaitForSeconds(2);//协同程序返回值格式 yield return Debug.Log("任务3"); yield return new WaitForSeconds(2);//协同程序返回值格式 yield return,为了测试按下空格键后是否停止执行协程; Debug.Log("任务5"); } // Update is called once per frame //通过按键停止协程的执行 void Update() { if (Input.GetKeyDown(KeyCode.Space)) { StopCoroutine("Task3"); } } }
小结


