Unity 协程之三种分析解决StopCorotine终止不了

 时间:2026-02-14 18:09:59

1、 打开 Unity,新建一个工程,具体如下图

Unity 协程之三种分析解决StopCorotine终止不了

2、在工程中,新建一个脚本,然后双击或者右键打开脚本,进行编辑,具体如下图

Unity 协程之三种分析解决StopCorotine终止不了

Unity 协程之三种分析解决StopCorotine终止不了

3、首先使用常用的方法,StartCoroutine(Func()),StopCoroutine(Func())的方法开启和停止一个协程,具体代码如下

Unity 协程之三种分析解决StopCorotine终止不了

4、脚本编译正确后,回到Unity界面,在场景中添加一个 GameObject ,把脚本挂载上去,运行场景,在 2 秒打印后,停止协程按钮,发现 5 秒过后,依然有打印,所以这种传统方法停止协程是不行,具体如下图

Unity 协程之三种分析解决StopCorotine终止不了

Unity 协程之三种分析解决StopCorotine终止不了

5、回到代码,编写第二种开启,停止协程的方法,StartCoroutine(“FuncName”),StopCoroutine("FuncName"),然后脚本编译正确后,回到Unity界面,运行场景,在 2 秒打印后,停止协程按钮,发现 5 秒过后,没有了打印,所以这种方法停止协程是可行的,具体如下图

Unity 协程之三种分析解决StopCorotine终止不了

Unity 协程之三种分析解决StopCorotine终止不了

6、回到代码,编写第三种开启,停止协程的方法,IEnumerator wrapFunc,包装一下协程函数,StartCoroutine(wrapFunc),StopCoroutine(wrapFunc),然后脚本编译正确后,回到Unity界面,运行场景,在 2 秒打印后,停止协程按钮,发现 5 秒过后,没有了打印,所以这种方法停止协程是可行的,具体如下图

Unity 协程之三种分析解决StopCorotine终止不了

Unity 协程之三种分析解决StopCorotine终止不了

7、StopCoroutineTest 脚本的具体代码如下:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class StopCoroutineTest : MonoBehaviour {

    IEnumerator wrapTest;

// Use this for initialization

void Start () {

        wrapTest = Test();

        //StartCoroutine(Test());

        //StartCoroutine("Test");

        StartCoroutine(wrapTest);

}

// Update is called once per frame

void Update () {

        if (Input.GetKeyDown(KeyCode.Space)) {

            //StopCoroutine(Test());

            //StopCoroutine("Test");

            StopCoroutine(wrapTest);

            Debug.Log("StopCoroutine(wrapTest)");

        }

}

    IEnumerator Test() {

        yield return new WaitForSeconds(2.0f);

        Debug.Log("2.0f Print");

        yield return new WaitForSeconds(5.0f);

        Debug.Log("5.0f Print");

    }

}

  • eclipse如何在某一行添加一个标记
  • Photoshop如何调出人物图片的青调天空色
  • Safari显示无法打开页面怎么办
  • 牛奶不能和什么食物同食?
  • 炫舞天外飞仙怎么弄
  • 热门搜索
    水肿是怎么回事 玛卡怎么吃效果好 四叶草怎么折 小叶增生怎么办 陀螺世界怎么赚钱 快递丢件怎么赔偿 山东协和学院怎么样 银杏果怎么吃不中毒 怎么收藏淘宝店铺 白内障怎么治