2016-11-12 77 views
0

一旦我調用此協程,我無法再次停止它,它會一直持續下去。我已經試圖用一個字符串等來調用它...C#Unity:無法停止協程

這個塊是在更新方法中被調用的方法可能與它有什麼關係?

這是我的代碼:

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; 
    } 
+0

如果'currentAmmo'等於2,會發生什麼?或者如果'currentAmmo'永遠不會超過2而'isColorFading'爲''' –

+0

哎呀,這是一個錯誤..如果我編輯... sry – r0128

+0

你必須調試和看到。也許你需要使用'||'而不是'&&' –

回答

2

你的問題很簡單。在幾句話,你必須保持你的協同程序的參考,以阻止它:

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; 
} 
+0

Thans很多,還沒有嘗試過,但似乎邏輯... – r0128

+0

對於您的信息,堆棧溢出有一個文檔類別與關於包括Unity在內的各種主題的很多例子,請查看! ;)http://stackoverflow.com/documentation/unity3d/topics – Hellium

0

您也可以嘗試簡單

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

因爲StartCoroutine是返回協程類型的對象,它最初的方法。