C#Unity:无法停止协同程序
一旦我称之为合作,我无法再阻止它,它将永远继续下去。我已经试着用字符串等来称呼它 此块位于更新方法中调用的方法中,该方法可能与此有关 这是我的代码:C#Unity:无法停止协同程序,c#,unity3d,C#,Unity3d,一旦我称之为合作,我无法再阻止它,它将永远继续下去。我已经试着用字符串等来称呼它 此块位于更新方法中调用的方法中,该方法可能与此有关 这是我的代码: if (currentAmmo < 2 && isColorFading == false) { StartCoroutine (ColourPulse (ammoCounter, initialColor, 2)); isColorFading = true; } else if
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;
}
if(currentAmmo<2&&isColorFading==false){
启动例行程序(彩色脉冲(弹药计数器,初始颜色,2));
isColorFading=true;
}否则如果(currentAmmo>=2&&isColorFading==true){
StopCorroutine(彩色脉冲(ammoCounter,initialColor,2));
ammoncounter.color=初始颜色;
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;
}
私有IEnumerator例程;
// [...]
if(currentAmmo<2&&isColorFading==false){
myCoroutine=colorpulse(amomcounter,initialColor,2);
启动程序(myCoroutine);
isColorFading=true;
}否则如果(currentAmmo>=2&&isColorFading==true){
stopcroutine(myCoroutine);
ammoncounter.color=初始颜色;
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;
}
私有IEnumerator例程;
// [...]
if(currentAmmo<2&&isColorFading==false){
myCoroutine=colorpulse(amomcounter,initialColor,2);
启动程序(myCoroutine);
isColorFading=true;
}否则如果(currentAmmo>=2&&isColorFading==true){
stopcroutine(myCoroutine);
ammoncounter.color=初始颜色;
isColorFading=false;
}
您也可以尝试使用simple
Coroutine myCoroutine = StartCoroutine(ColourPulse (ammoCounter, initialColor, 2);
StopCoroutine(myCorutine);
因为startcroutine是一个返回它所启动的Coroutine类型对象的方法。您也可以尝试simple
Coroutine myCoroutine = StartCoroutine(ColourPulse (ammoCounter, initialColor, 2);
StopCoroutine(myCorutine);
因为startcroutine是一个返回它所启动的Coroutine类型对象的方法。如果
currentAmmo
等于2会发生什么?或者如果currentAmmo
从来都不大于2,而iscolorReading
为true
oops这是一个错误..让我编辑…sryy您必须调试并查看。也许你需要使用|
而不是&
我应该在debug中写些什么???在每个if语句中添加debug.Log
和不同的消息,以查看代码中发生了什么。这就是他的意思。如果currentAmmo
等于2会怎么样?或者如果currentAmmo
从来都不大于2,而iscolorReading
为true
oops这是一个错误..让我编辑…sryy您必须调试并查看。也许你需要使用|
而不是&
我应该在debug中写些什么???在每个if语句中添加debug.Log
和不同的消息,以查看代码中发生了什么。这就是他的意思。关于您的信息,Stack Overflow有一个文档类别,其中有许多关于各种主题的示例,包括Unity,请查看!)供您参考,Stack Overflow有一个文档类别,其中有许多关于各种主题的示例,包括Unity,请查看!)