10.协程

协程的概念

​ 协程就是“协同程序”,并不是多线程

​ 既然叫协同,所以还有一个主程序,那么这个主程序其实就是我们的目前学习到的各种生命周期函数

​ 为什么需要协程?

​ 主程序已经在执行某个任务,希望“同时运行”其他逻辑,这里的同时,并不是多线程意义上的同时,只是感官上是同时

协程函数的定义

public IEnumerator Demo()  //协程函数的定义
{
	print("做某些事");
    yield return new WaitForSeconds(1.0f); //等待一秒
    print("做一些事");
    yield return null; //还有很多返回值。
}
public int Main()  //普通函数的定义
{
    return 0;
}

​ 协程函数和普通函数不一样,不会因为前面的返回,不执行后面的代码

协程函数的使用

StartCoroutine();

​ //执行一个协程,参数直接调用协程方法即可,可以用一个变量接受返回值用于后续停止该协程。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class L2_10Demo : MonoBehaviour
{
   
    void Start()
    {
        StartCoroutine("Demo");
        StartCoroutine(Demo()); //这个可以传入参数
    }

    
    void Update()
    {
        
    }
    public IEnumerator Demo()  //协程函数的定义
    {
        print("做某些事");
        yield return new WaitForSeconds(1.0f); //等待一秒
        print("做一些事");
        yield return null; //还有很多返回值。
    }
}

可以使用协程函数做动画,这里以一个旋转的动画为例:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class L2_10Demo : MonoBehaviour
{
   
    void Start()
    {
        //  StartCoroutine("Demo");
        //    StartCoroutine(Demo()); //这个可以传入参数
        // StartCoroutine("Zhuan");
        StartCoroutine(Demo3());
    }

    

    void Update()
    {
        
    }

    private IEnumerator Zhuan()
    {
        while(true)
        {
            yield return new WaitForSeconds(0.1f);
            transform.Rotate(new Vector3(10, 0, 0));
            
        }
    }

    public IEnumerator Demo3()
    {
        transform.position = new Vector3(2, 2, 2);  //先瞬移到(2,2,2);再执行下面的语句
        yield return Zhuan();  //这里返回Zhuan,就是调用这个函数。
    }
}

协程函数的停止

协程如果运行到最后一行,意味着停止,但是如果我们想主动停止,就输入以下命令:

StopAllCoroutines():结束全部协程

StopCoroutine(); 结束某个协程序

StopCoroutine ( lEnumerator routine); 和调用协程一样使用,但是如果协程有参数不要使用这个。

StopCoroutine(Coroutine routine); 参数填写协程变量

StopCoroutine(string methodName); 参数填写协程方法的名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值