Binouz, HEEEEELLLLLPPPPP!:
nbCoroutines = battleAction.targets.Count;
foreach (GameObject target in battleAction.targets.ToList())
{
//nbCoroutines décrémenté à chaque fin d'exec de coroutine TakeDamage
StartCoroutine(target.GetComponent<BattleScript>().TakeDamage(dmg));
}
//c'est sensé attendre la fin de toutes les coroutines
while (nbCoroutines > 0)
{
yield return null;
}
Debug.Log("end wait");
foreach (GameObject target in battleAction.targets.ToList())
{
target.GetComponent<BattleScript>().DestroyIfDead();
}
La méthode DestroyIfDead est exécutée avant le log "end wait". Du coup ben ça détruit l'objet avant la fin de la coroutine TakeDamage (qui attend la fin de l'animation d'impact/mort).
... WHY ??
Avant ça je faisais yield return StartCoroutine(TakeDamage(dmg)) du coup ça temporisait bien mais ça faisait tout séquentiellement, y compris le destroy.
Alors que là je veux que mes unités encaissent les dégats en même temps et se détruisent toutes ensuite.
HEEELLLPPP
hichanbis (12 Jun 2017)