前言
协同程序也称作协程:在主线程运行时,来开启另外一个逻辑处理,来协同主线程的执行。
开始和停止协同程序
在unity3d中开始协同程序使用MonoBehaiour.StartCoroutine,所以该方法必须在MonoBehaiour或其子类中使用
开始有两种方式:
- StartCoroutine(string MethodName)
- StartCoroutine(IEnumerator routine)
两者区别: - 第一种方式最多只能传递一个参数,并且性能消耗过大。
- 第二种方式没有参数的限制,性能相对于第一种小。
停止该MonoBehaiour下的协同程序
- StopCoroutine():停止某一个协同程序
- StopAllCoroutine(): 停止所有协同程序
Yield中断指令
一个协同程序收到Yield指令后,会暂停执行,返回到上层执行,同时等待这个指令达成(条件满足)后从该位置继续向下执行代码
注意
在一个MonoBehaiour提供的主线程中,只能有一个处于运行状态的协同程序(其他可以在等待状态)
代码测试
- StopCoroutine()方法第一种,创建协同程序
using UnityEngine;
using System.Collections;
public class CoroutineTest : MonoBehaviour {
//创建开始协同程序
void Start(){
StartCoroutine ("FuncA");
StartCoroutine ("FuncB", "- -");//只能传入一个参数