"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment implémenter les retards dans Unity for Gameplay et le séquençage des événements?

Comment implémenter les retards dans Unity for Gameplay et le séquençage des événements?

Publié le 2025-02-06
Parcourir:465

How to Implement Delays in Unity for Gameplay and Event Sequencing?

Explication détaillée de l'implémentation de retard d'unité

]

La création de retards dans l'unité est essentielle pour gérer les flux de jeux, le tri des événements et simuler le comportement du monde réel. Voici quelques façons d'atteindre le retard:

1. startCoroutine

: Déclarez une fonction coroutine.
  • waitForsEconds : pause l'exécution pour un temps spécifié (affecté par la vitesse de jeu).
  • waitForsEcondSrealtime : pause l'exécution pour un moment spécifié (non affecté par la vitesse de jeu).
  • Exemple:
ienumerator waitForsEnondSExample () { // tourne à 90 degrés transform.rotate (vector3.Right * 90); // attendez 4 secondes (non affectée par la vitesse de jeu) Rendre le rendement nouveau WaitForsEconnDeSRealtime (4); // tourne à 40 degrés transform.rotate (vector3.Right * 40); // attendez 2 secondes (affecté par la vitesse de jeu) Rendre le rendement nouveau WaitForsEcondes (2); // tourne à 20 degrés transform.rotate (vector3.Right * 20); }

2.
IEnumerator WaitForSecondsExample()
{
    // 旋转90度
    transform.Rotate(Vector3.right * 90);

    // 等待4秒(不受游戏速度影响)
    yield return new WaitForSecondsRealtime(4);

    // 旋转40度
    transform.Rotate(Vector3.right * 40);

    // 等待2秒(受游戏速度影响)
    yield return new WaitForSeconds(2);

    // 旋转20度
    transform.Rotate(Vector3.right * 20);
}
ou

pour boucle de

: augmentez progressivement la minuterie jusqu'à ce que la valeur souhaitée soit atteinte.
  • rendement return null : pause exécution d'un cadre.
  • Exemple: ienumerator timebasedLoopexample () { // tourne à 90 degrés transform.rotate (vector3.Right * 90); // attendez 4 secondes (affectée par la vitesse de jeu) Timer flottant = 0; Tandis que (temporisateur

3.

IEnumerator TimeBasedLoopExample()
{
    // 旋转90度
    transform.Rotate(Vector3.right * 90);

    // 等待4秒(受游戏速度影响)
    float timer = 0;
    while (timer 
: L'exécution n'est pas suspendue tant que la condition n'est pas vraie.

Waits : pause exécution lorsque la condition est vraie.

  • Exemple: ienumerator waituntilexample () { // attendez que le score du joueur atteigne 100 rendement return new waitluntil (() => playerCore> = 100); // Chargez le niveau suivant SceneManager.Loadscene ("Nextlevel"); }
  • 4.
invoque

: planifier une fonction à exécuter après un retard spécifié.

IEnumerator WaitUntilExample()
{
    // 等待玩家分数达到100
    yield return new WaitUntil(() => playerScore >= 100);

    // 加载下一关
    SceneManager.LoadScene("NextLevel");
}
: similaire à

invoquer , mais la fonction est appelée à plusieurs reprises à des intervalles de temps spécifiés.

Exemple:
  • invoke ("feeddog", 5); InvokerePeating ("MovePlayer", 0,5f, 0,2f); ]
  • 5.
  • time.deltatime : utilisé pour mesurer le temps entre les trames.
  • Variable TIMER
: incrément chaque trame jusqu'à ce que la valeur souhaitée soit atteinte.

If
Invoke("FeedDog", 5); // 5秒后调用FeedDog()

InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。

Exemple:

void Update () { timer = time.deltatime; if (temporisateur> = 5) { // Exécuter le code après 5 secondes minuterie = 0; FeedDog (); } }
  • résoudre votre problème:
  • Pour créer un retard lors de l'affichage du texte dans votre script, vous pouvez utiliser le code suivant:
  • ienumerator showTextWithDelay () { Textui.text = "Bienvenue sur l'assistant numérique!"; Rendre Retour New WaitForsEcondes (3F); Textui.text = ("Le nombre le plus élevé que vous pouvez choisir est" Max); Rendre Retour New WaitForsEcondes (3F); Textui.text = ("Le nombre le plus bas que vous puissiez choisir est" min); } StartCoroutine (showTextWithDelay ());
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3