2016-11-12 13 views
0

Sobald ich diese Coroutine aufgerufen habe, kann ich sie nicht mehr stoppen und sie wird für immer weitergehen. Ich habe bereits versucht, es mit einem String usw. zu nennen ...C# Unity: Coroutine kann nicht gestoppt werden

Dieser Block ist in einer Methode, die in der Update-Methode aufgerufen wird, könnte das irgendetwas damit zu tun haben ???

Dies ist mein Code:

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

Was passiert, wenn 'currentAmmo' gleich 2 ist? Oder was passiert, wenn 'currentAmmo' nie größer als 2 ist, während' isColorFading' '' wahr ist. –

+0

oops, das war ein Fehler ... lass mich bearbeiten ... sry – r0128

+0

musst du debuggen und sehen. Vielleicht müssen Sie '||' anstelle von '&&' –

Antwort

2

Sie Problem ist einfach. In wenigen Worten, müssen Sie einen Verweis Ihrer Koroutine, um es zu stoppen halten:

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 viel, habe es noch nicht ausprobiert, aber scheint logisch ... – r0128

+0

Zu Ihrer Information, Stack Overflow hat eine Kategorie Dokumentation mit viele Beispiele zu verschiedenen Themen wie Unity, schau es dir an! ;) http://stackoverflow.com/documentation/unity3d/topics – Hellium

0

Sie auch einfach

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

versuchen kann, weil StartCoroutine ein Verfahren ist, das Objekt Coroutine Typ zurückgibt, dass es gestartet .

Verwandte Themen