Unity协程简述

版本是2018\3\14

先上例子:

public void ShowStars()
    {
        //print(birds.Count);
        StartCoroutine("Show");
    }
    IEnumerator Show()
    {                                    f
        for (int i = 0; i < birds.Count + 1; i++)
        {
            yield return new WaitForSeconds(0.2f);
            stars[i].SetActive(true);
        }
    }

这份代码主要用到了协程

StartCoroutine("Show");

启动一个名为Show的协程

 yield return new WaitForSeconds(0.2f);

等待0.2秒后执行后续代码

个人认为协程的好处在于能够把工作量很大的代码分配到几桢去完成,而不是一定要在一帧中等待全部操作执行完毕后再进入下一帧,以解决画面卡顿等问题

常用的协程操作:

//开启协程:
1.StartCoroutine("Test");
2.StartCoroutine("Test2",1);//只能传一个Object类型的参数
3.StartCoroutine(Test()); 
4.StartCoroutine(Test2(1));//可以传很多参数

//停止协程:
1.StopCoroutine("Test");
2.StopCoroutine("Test2");
//对于1、2两种开启协程的方式可以用上面1、2介绍的方式停止,也可以用下面3、4的方式停止
3.Coroutine c = StartCoroutine(Test()); 
  StopCoroutine(c);
4.Coroutine c = StartCoroutine(Test2(1)); 
  StopCoroutine(c);
//对于3、4两种方式开启的协程只能用上面3、4两种方式停止

协程的更多操作可以看下这篇博客:Unity中协程(IEnumerator)的使用方法介绍_悲欢离合的博客-CSDN博客_unity 协程函数

对于上面那篇博客的一点纠正和补充:

WaitForEndOfFrame表示协程是跟在LateUpdate之后执行的,WaitForFixedUpdate表示协程是跟在FixedUpdate之后执行的

协程的原理及它和线程区别:unity 协程原理与线程的区别_IT你我-CSDN博客_协程和线程的区别

再说下协程和异步加载场景的区别:异步加载是Unity另开了一个线程进行加载(线程和协程的区别),它们在一定程度上都能缓解场景加载卡顿的问题

其它问题:

当一个协程执行完毕时,利用StartCoroutine返回的代表该协程的值不会改变,要自己手动置为空

有错误欢迎指出

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值