【unity 2d】自学2D游戏开发之协程

一、什么叫协程

协程是协同程序,顾名思义,在主程序运行的同时,开启另外一段逻辑处理程序,协助当前程序的执行。协程是通过迭代器来实现功能的,通过关键字IEnumerator来定义一个迭代方法,注意使用的是IEnumerator

二、协程的使用场景

对于保证不会阻塞的并行操作且并行性要求不高的并行操作,可以使用协程。 更实际来说,协程最常用于延时执行等控制时间轴的操作,例如N秒后调用指定函数,比如说,在游戏中发射子弹后的弹壳几秒后消失。

三、 协程使用示例

首先编写好协程函数

IEnumerator TestWaitForSeconds()
{
    //3s后执行Debug.Log;
    yield return new WaitForSeconds(3.0f);
    Debug.Log("启动协程3s后");
}

然后在某个地方使用StartCoroutine(TestWaitForSeconds())或者StartCoroutine(“TestWaitForSeconds”)

  1. 开启协程
StartCoroutine(IEnumerator method);
  • 参数是方法(TestMethod()),此方法中可以包含多个参数。
  • IEnumrator类型的方法不能含有ref或者out类型的参数,但可以含有被传递的引用
  • 形参方法必须有返回值,且返回值类型为IEnumrator,返回值使用(yield retuen +表达式或者值,或者 yield break)语句
  1. 终止协程
StopCoroutine(string methodName);//终止指定的协程
  • 在程序中调用StopCoroutine()方法只能终止以字符串形式启动的协程
StopAllCoroutine();//终止所有协程

# 协程语法

### 开启协程

```csharp
StartCoroutine(string methodName);
  1. 挂起
//程序在下一帧中从当前位置继续执行
yield return 0;

//程序在下一帧中从当前位置继续执行
yield return null;

//程序等待N秒后从当前位置继续执行
yield return new WaitForSeconds(N);

//在所有的渲染以及GUI程序执行完成后从当前位置继续执行
yield new WaitForEndOfFrame();

//所有脚本中的FixedUpdate()函数都被执行后从当前位置继续执行
yield new WaitForFixedUpdate();

//等待一个网络请求完成后从当前位置继续执行
yield return WWW;

//等待一个xxx的协程执行完成后从当前位置继续执行
yield return StartCoroutine(xxx);

//如果使用yield break语句,将会导致协程的执行条件不被满足,不会从当前的位置继续执行程序,而是直接从当前位置跳出函数体,回到函数的根部
yield break;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游戏自学

生活不易,打赏随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值