c# Unity:无法停止协程

本文关键字:无法停止 Unity | 更新日期: 2023-09-27 18:17:41

一旦我调用这个协程,我就无法再停止它,它将永远继续下去。我已经尝试过用字符串等来调用它了。

这个块是在一个方法中被调用的更新方法可能有什么关系吗?

这是我的代码:

 if (currentAmmo < 2 && isColorFading == false) {
        StartCoroutine (ColourPulse (ammoCounter, initialColor, 2));
        isColorFading = true;
    } else if (currentAmmo >= 2 && isColorFading == true) {
        StopCoroutine (ColourPulse (ammoCounter, initialColor, 2)); 
        ammoCounter.color = initialColor;
        isColorFading = false;
    }

c# Unity:无法停止协程

你的问题很简单。简而言之,您必须保留协作程序的引用,以便停止它:

private IEnumerator myCoroutine ;
// [...]
if (currentAmmo < 2 && isColorFading == false) {
    myCoroutine = ColourPulse (ammoCounter, initialColor, 2) ;
    StartCoroutine ( myCoroutine ) ;
    isColorFading = true;
} else if (currentAmmo >= 2 && isColorFading == true) {
    StopCoroutine (myCoroutine); 
    ammoCounter.color = initialColor;
    isColorFading = false;
}

你也可以尝试简单的

Coroutine myCoroutine = StartCoroutine(ColourPulse (ammoCounter, initialColor, 2);
StopCoroutine(myCorutine);  

因为StartCoroutine是一个返回它启动的协程类型对象的方法。