Code

Faire attendre une fonction pendant quelques secondes – Unity C #

Comment faire pour qu’une fonction dans un script C# attende pendant quelques secondes ?

Il faut utiliser une coroutine à l’aide de la méthode MonoBehaviour.StartCoroutine

Voici une traduction de la documentation officielle.

Vous pouvez interrompre l’execution d’une coroutine à tout moment à l’aide de l’instruction yield. Lorsqu’on utilise une instruction yield, la coroutine interrompt l’exécution et reprend automatiquement à la frame suivante. Consultez la documentation Coroutines pour plus de détails.

Les coroutines sont excellentes pour modéliser le comportement sur plusieurs frames. La fonction StartCoroutine retourne dès que la première instruction yield est atteinte. Il n’y a aucune garantie que les coroutines se terminent dans le même ordre qu’elles ont commencé, même si elles finissent dans la même frame.

Quand on utilise yield avec n’importe quel type, y compris null, cela entraîne la reprise de l’exécution sur une image ultérieure, sauf on arrête la coroutine.

Remarque: vous pouvez arrêter une coroutine à l’aide de MonoBehaviour.StopCoroutine et MonoBehaviour.StopAllCoroutines.

Les coroutines s’arrêtent également lorsque le MonoBehaviour est détruit ou si le GameObject auquel le MonoBehaviour est attaché est désactivé, les coroutines ne sont pas arrêtées lorsqu’un MonoBehaviour est désactivé.

using System.Collections;
using UnityEngine;

public class ExempleCoroutine1 : MonoBehaviour
{
    
    void Start()
    {

        // Démarre la fonction Wait (coroutine)
        // Wait veut dire attendre
        StartCoroutine(Wait());

        // Exécution en parallèle
        print("S'affiche avant que Wait soit finie : " + Time.time);
    }

   private IEnumerator Wait()
    {
        yield return new WaitForSeconds(5f);

        print("S'affiche après 5 secondes environ : " + Time.time);
    }
}
using UnityEngine;
using System.Collections;

// Dans cet exemple, nous allons voir comment invoquer une coroutine
// et continuer l'exécution de la fonction en parallèle

public class ExempleCoroutine2 : MonoBehaviour
{

	

	void Start()
	{

		// Démarre la fonction WaitAndPrint (coroutine)
		// WaitAndPrint veut dire Attend et affiche 
		StartCoroutine(WaitAndPrint(2f));

		// Exécution en parallèle
		print("S'affiche avant que WaitAndPrint soit finie : " + Time.time);
	}

	
	// Toutes les 2 secondes cela affichera :
	// "Attend, puis affiche 2.0"
	// "Attend, puis affiche 4.0"
	// etc
	private IEnumerator WaitAndPrint(float waitTime)
	{
		//Boucle infinie
		while (true)
		{
			yield return new WaitForSeconds(waitTime);
			print("Attend, puis affiche " + Time.time);
		}
	}
}

Recevez les dernières actus

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut