Unity零基础到入门 ☀️| 使用协程的方法案例

举报
呆呆敲代码的小Y 发表于 2021/10/29 18:57:56 2021/10/29
【摘要】 💛使用协程 🚩定义协程首先我们需要通过IEnumerator 定义一个协程,要通过yield return来定义返回值我们先来创建一个简单协程看一下代码,下面就是一个简单的协程! IEnumerator Test(string str) { //代码块 Debug.Log("协程被启动了!"+ str); yield return ...

💛使用协程

🚩定义协程

首先我们需要通过IEnumerator 定义一个协程,要通过yield return来定义返回值

我们先来创建一个简单协程看一下代码,下面就是一个简单的协程

    IEnumerator Test(string str)
    {
        //代码块
        Debug.Log("协程被启动了!"+ str);
        yield return null;
        //代码块
    }

🚩启动协程

协程定义完了需要我们进行启动,启动协程有以下几种方法

  1. StartCoroutine(string methodName):通过协程的方法名(字符串形式)启动
  2. StartCoroutine(string methodName,object values):带参数的通过方法名(字符串形式)进行调用
  3. StartCoroutine(IEnumerator routine):通过调用方法的形式启动

如果不是很明白,看一下代码就清楚了

    void Start()
    {
        //通过调用方法名来启动协程(第一种方法)
        StartCoroutine("Test1");

        //通过调用方法名来启动协程(第二种方法)
        StartCoroutine("Test2", "Hello World");

        //直接调用方法启动协程(第三种方法)
        StartCoroutine(Test1());
        StartCoroutine(Test2("Hello World"));
    }

    IEnumerator Test1()
    {
        //代码块
        Debug.Log("协程被启动了!");
        yield return null;
        //代码块
    }
    IEnumerator Test2(string str)
    {
        //代码块
        Debug.Log("协程被启动了!" + str);
        yield return null;
        //代码块
    }

🚩停止协程

协程有一个启动的方法,也有对应的停止协程的方法

StopCoroutineStopAllCoroutines两种方式都可以停止协程

StopAllCoroutines的作用是停止所有该脚本中启动的协程
使用方法也很简单,直接调用就可以了!

        //关闭该脚本中启动的所有协程!
        StopAllCoroutines();

StopCoroutine中又有三种方式

  • StopCoroutine(string methodName):通过方法名(字符串)来关闭协程
  • StopCoroutine(IEnumerator routine):通过调用方法的形式来关闭协程
  • StopCoroutine(Coroutine routine):通过指定的协程来关闭

看一下代码实际操作

    void StopTest()
    {
        //第一种方式:通过调用方法的形式来关闭协程
        StopCoroutine(Test1());

        //第二种方式:通过方法名(字符串)来关闭协程
        StopCoroutine("Test1");

        //第三种方式:通过指定的协程来关闭
        Coroutine a = StartCoroutine(Test1());
        StopCoroutine(a);

        //关闭该脚本中启动的所有协程!
        StopAllCoroutines();
    }

这里有一个地方一定要注意:使用哪一种开启协程的方法,就要使用哪一种方式来关闭协程!

比如是使用字符串的方式启用协程,
例:StartCoroutine("Test1"); 那就要使用字符串的方式来关闭,StopCoroutine("Test1");

同理 使用调用方法的形式开启,那就要使用调用方法的方式来关闭协程!

具体为什么要有这样的规则,俺也不知道,遵从使用即可,就是这样规定的,以后有时间可以研究源码看看~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。