Comment relancer une Coroutine ? [C#]

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Julianx2
Messages : 213
Inscription : 25 Sep 2013 22:23
Localisation : Paris

Comment relancer une Coroutine ? [C#]

Message par Julianx2 » 22 Fév 2015 18:47

Bonjour,

Je lutte depuis quelques temps pour trouver comment stopper une coroutine et la relancer...
Je cherche à détecter la mort du joueur, stopper la coroutine et la relancer juste après lors d'un event quelconque.

Quelqu'un aurait-il une idée ?
Merci :)

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class TimerTest : MonoBehaviour {

	public GameObject drop; 
	public float Begin = 1; //time on 
	public float End = 1; //time off

	
	void Start () {

		StartCoroutine("Flicker"); //start coroutine

	}


	void Update () { 		//Où pourrais-je tester / savoir que mon perso est mort en dehors d'update ?
	
		if (LifeSystem.CamRespawn == true)                              // if we die
		{	
			StopCoroutine("Flicker"); // Stop then restart
			Debug.Log ("Stop");
			//StartCoroutine("Flicker"); ???

		}
}
	
	IEnumerator Flicker(){
		while(true){

			yield return new WaitForSeconds(Begin);
			gameObject.renderer.material.color = Color.green;

			yield return new WaitForSeconds(End);
			gameObject.renderer.material.color = Color.black;	

		}
		
	}
}
Quizy - Culture Générale & Quiz - https://play.google.com/store/apps/deta ... XON.Quizy2

Avatar de l’utilisateur
NDrew
Messages : 581
Inscription : 25 Oct 2013 15:14
Localisation : Clermont-Ferrand

Re: Comment relancer une Coroutine ? [C#]

Message par NDrew » 22 Fév 2015 22:06

Perso j'ai l'habitude d'utiliser un boolean qui permet de savoir si la coroutine est en route ou pas. Je set a true au debut et false a la sortie de la coroutine. Tu peux apres, si le bool te dit que la coroutine tourne la "stopper" et la relancer.

Julianx2
Messages : 213
Inscription : 25 Sep 2013 22:23
Localisation : Paris

Re: Comment relancer une Coroutine ? [C#]

Message par Julianx2 » 23 Fév 2015 20:58

J'ai simplifié le problème en relançant la scène à la mort du perso.

Maintenant le problème, c'est que même en utilisant LoadLevel, la coroutine continue à tourner.

Alors j'ai utilisé Update pour la stopper, mais je n'arrive pas à la relancer par la suite...

Code : Tout sélectionner

void Update () {

		if (LifeSystem.StopCo == true)
		{
			StopCoroutine("FlickerTrigger");

	}
}
Quizy - Culture Générale & Quiz - https://play.google.com/store/apps/deta ... XON.Quizy2

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6246
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Comment relancer une Coroutine ? [C#]

Message par boubouk50 » 24 Fév 2015 10:23

Remet LifeSystem.StopCo à false juste après l'avoir coupée?

Code : Tout sélectionner

if (LifeSystem.StopCo)
{
     StopCoroutine("FlickerTrigger");
     LifeSystem.StopCo = false;
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Julianx2
Messages : 213
Inscription : 25 Sep 2013 22:23
Localisation : Paris

Re: Comment relancer une Coroutine ? [C#]

Message par Julianx2 » 24 Fév 2015 11:38

Yes c'est bon problème résolu, merci pour le coup de main !
Quizy - Culture Générale & Quiz - https://play.google.com/store/apps/deta ... XON.Quizy2

Répondre

Revenir vers « (C#) CSharp »