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显示无法打开页面怎么办
  • 牛奶不能和什么食物同食?
  • 炫舞天外飞仙怎么弄
  • 热门搜索
    麦粒肿怎么治疗好得快 得了湿疹怎么办 通讯地址怎么填 骑马与砍杀怎么自立 男人早泄怎么办 销售成本怎么算 怎么办我爱你 色带怎么换 老放臭屁是怎么回事 磨牙是怎么回事