1、用字符串打开协程时,也应用字符串关闭,它们是成对存在的,如果要传参,只能传一个参数。
2、用方法名打开协程时,关闭协程必须用打开的返回值去关闭,否则会关闭失败,可以传多个参数。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StartCoroutine : MonoBehaviour
{
public Coroutine test;
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
test= StartCoroutine(Test(1,2));
}
if (Input.GetKeyDown(KeyCode.S))
{
StopCoroutine(test);
}
}
IEnumerator Test(int a,int b)
{
while (true)
{
Debug.Log("协程执行中");
yield return new WaitForSeconds(1);
}
}
}
3、StopAllCoroutine和StopCoroutine都只能关闭当前脚本的协程,不包含其他脚本,同个物体对象的其他脚本也不行
4、开启关闭其他脚本的协程可以先持有那个脚本,再使用持有脚本去关闭脚本里的协程
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class StopCoroutine : MonoBehaviour {
StartCoroutine sc;
private void Awake()
{
sc=GetComponent<StartCoroutine>();
}
void Update () {
if (Input.GetKeyDown(KeyCode.D))
{
sc.StopCoroutine(sc.test);
}
}
}