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;
}
你的问题很简单。简而言之,您必须保留协作程序的引用,以便停止它:
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是一个返回它启动的协程类型对象的方法。