【unity学习笔记二十三】协同程序

本节要点

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");
        }

    }


}

小结

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注