Les développeurs Unity rencontrent souvent des difficultés avec l’exécution asynchrone.
Cela peut entraîner des blocages dans le programme et affecter l’expérience utilisateur.
Les coroutines offrent une solution efficace pour gérer le code asynchrone sans bloquer l’application. Explorez leur utilisation pour optimiser vos projets Unity.
Créez votre premier jeu 3D en C# avec Unity, étape par étape.
Les coroutines dans Unity sont des méthodes spéciales qui permettent d’exécuter du code sur plusieurs images sans bloquer l’exécution du reste du programme. Elles sont particulièrement utiles lorsque vous avez besoin de créer des délais, d’attendre une condition, ou d’animer des événements qui doivent s’étendre sur plusieurs images.
Une coroutine est une fonction qui peut suspendre son exécution, attendre une condition donnée (comme un certain nombre de secondes), puis reprendre là où elle s’était arrêtée. Contrairement aux méthodes classiques, elles permettent de gérer du code asynchrone sans stopper le fil principal (le main thread) du jeu.
Les coroutines utilisent le mot-clé IEnumerator , et elles sont démarrées avec la méthode StartCoroutine() . Elles peuvent être interrompues à tout moment avec StopCoroutine() .
Voici quelques méthodes pour gérer les pauses dans une coroutine :
- yield return null :suspend l’exécution de la coroutine jusqu’à la prochaine image.
- yield return new WaitForSeconds(float seconds) :suspend la coroutine pendant un
certain nombre de secondes.
- yield return new WaitUntil(Func<bool>) :attend jusqu’à ce qu’une condition
spécifique soit remplie.
Imaginons une scène où vous souhaitez faire clignoter un objet toutes les secondes et activer une action après un certain délai.
usingUnityEngine;
publicclassCoroutineDemo : MonoBehaviour {
[SerializeField] privateGameObject objectToBlink;
[SerializeField] privatefloatblinkDuration = 1.0f;
[SerializeField] privatefloatactionDelay = 5.0f;
privatevoidStart() {
// Démarrer la coroutine de clignotement
StartCoroutine(BlinkObject());
// Démarrer une autre coroutine qui exécute une action après un délai
StartCoroutine(DelayedAction());
}
privateIEnumeratorBlinkObject() {
while (true) // Boucle infinie pour un clignotement constant
{
objectToBlink.SetActive(
!objectToBlink.activeSelf); // Alterner la visibilité
yieldreturnnewWaitForSeconds(blinkDuration); // Attendre avant de changer
}
}
privateIEnumeratorDelayedAction() {
yieldreturnnewWaitForSeconds(actionDelay); // Attendre un certain délai
Debug.Log("Action déclenchée après " + actionDelay + " secondes!");
}
}
La coroutine BlinkObject() alterne l’état d’un objet (visible/invisible) toutes les blinkDuration secondes en utilisant yield return new WaitForSeconds() . DelayedAction() : Attend un délai de actionDelay avant de déclencher une action (ici un simple message dans la console).
Maintenant que vous maîtrisez les coroutines et leur puissance pour gérer des actions dans le temps, vous êtes prêt à passer à l’étape suivante : réaliser votre premier projet Unity avec C#. Vous allez combiner ces concepts pour créer des interactions dynamiques et fluides, tout en organisant bien votre code.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Qu'est-ce qu'une coroutine dans Unity ?
Comment démarre-t-on une coroutine dans Unity ?
Comment suspendre l'exécution d'une coroutine ?
Quels sont les avantages des coroutines par rapport aux méthodes classiques ?
Quelles sont les erreurs courantes lors de l'utilisation des coroutines ?
Conclusion
En comprenant les coroutines, vous optimisez l’exécution asynchrone dans Unity. Quelles autres techniques avez-vous exploré pour fluidifier vos projets?