Méthode pour une boucle qui fait une action toute les X secondes
Bonsoir tout le monde,
Une petite question à la con, j'ai besoin de vos expériences sur Unity (et surement plus en général sur la programmation), je m'explique:
Comme vous avez vu dans le titre, je me pose la question de la meilleur façon de faire une boucle (infinie ou non, ce n'est pas un souci) qui fait une action toutes les X secondes (comme une regen de vie par exemple dans un jeu)
Actuellement avec mes connaissances acquises je vois deux méthodes (peut être que vous allez m'en apprendre des autres :D) et j'aimerais savoir ce qui est le mieux selon vous ou carrément si une des méthodes est une très mauvaise idée/habitude!
1. Une simple float pour compter le temps dans la void update
Code:
1 2 3 4 5 6 7 8 9 10
|
void Update() {
TempsRegenVie -= Time.deltaTime;
if (Temps <= 0.00f)
{
Vie += 1;
TempsRegenVie = 1.00f;
}
} |
2. Une coroutine:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
void Start()
{
StartCoroutine("RegenVie");
}
IEnumerator RegenVie()
{
while (true)
{
Vie += 1;
yield return new WaitForSeconds(1);
}
} |
Utiliser une variable TempsRegenVie de type float sera moins précis de la coroutine? vu que c'est mis à jour pendant le void update qui a lieu une fois par frame, au final on ne sera jamais à 1 secondes précisément.... ou cela n'a pas d'impact pour des millièmes de secondes?
Et du coup le waitforseconds lui fonctionne indépendamment de tout ça ? ou c'est liés aussi au time.deltatime mais on ne le voit pas?
Merci pour vos retour et conseils d'avance :)
TontonNico