手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

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

时间:2024-10-11 23:14:05

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,包装一下协程函数,StartCoroutin髫潋啜缅e(wrapFunc),StopCoroutine(wrapFunc),然后脚本编译正确后,回到Unity界面,运行场景,在 2 秒打印后,停止协程按钮,发现 5 秒过后,没有了打印,所以这种方法停止协程是可行的,具体如下图

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

7、StopCoroutineTest 脚本的具体代码如下:using Sy衡痕贤伎stem.Collections;using System.Co造婷用痃llections.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"); }}

© 手抄报圈