„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie implementieren Sie Verzögerungen in Einheit für Gameplay- und Ereignissequenzierung?

Wie implementieren Sie Verzögerungen in Einheit für Gameplay- und Ereignissequenzierung?

Gepostet am 2025-02-06
Durchsuche:521

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

detaillierte Erklärung der Unity Delay Implementierung

]]

Verzögerungen in der Einheit sind für die Verwaltung von Spielflüssen, das Sortieren von Ereignissen und die Simulation des realen Verhaltens von wesentlicher Bedeutung. Hier sind einige Möglichkeiten, um Verzögerungen zu erreichen:

1. startCoroutine

: deklarieren Sie eine Coroutine -Funktion.
  • waitForseconds : Pause für eine bestimmte Zeit (von der Spielgeschwindigkeit betroffen).
  • waitForsecondsRealtime : Pause für eine bestimmte Zeit (nicht von Spielgeschwindigkeit betroffen).
  • Beispiel:
iEnumerator waitForsecondSexample () { // 90 Grad drehen Transformation.Rotate (Vector3.Right * 90); // 4 Sekunden warten (nicht von der Spielgeschwindigkeit betroffen) Rendite Return New WaitForsecondsRealTime (4); // 40 Grad drehen transform.ROTATE (Vector3.Right * 40); // 2 Sekunden warten (von Spielgeschwindigkeit betroffen) Rendite Return New WaitForSeconds (2); // 20 Grad drehen Transformation.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);
}

Rendite return null

    : Pause Ausführung eines Frame.
  • Beispiel:
  • iEnumerator timebasedloopexample () { // 90 Grad drehen Transformation.Rotate (Vector3.Right * 90); // 4 Sekunden warten (von Spielgeschwindigkeit betroffen) float timer = 0; Während (Timer 3.

waituntil : Die Ausführung wird nicht suspendiert, wenn die Bedingung wahr ist.

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

    // 等待4秒(受游戏速度影响)
    float timer = 0;
    while (timer 

Beispiel: Ienumerator WaitUntilePlampe () { // Warten Sie, bis die Punktzahl des Spielers 100 erreicht ist Rendite Return New WaitUntil (() => PlayerCore> = 100); // die nächste Stufe laden SzeneManager.loadscene ("nexTlevel"); }

  • 4.
  • invoke
  • : Planen Sie eine Funktion, die nach einer angegebenen Verzögerung ausgeführt werden soll.
  • invokerepeating

: ähnlich wie invoke , aber die Funktion wird wiederholt in bestimmten Zeitintervallen aufgerufen.

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

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

invoke ("feeddog", 5); InvokePeating ("MovePlayer", 0,5F, 0,2F); ]]

5.
  • time.deltatime : Wird verwendet, um die Zeit zwischen Frames zu messen.
  • Timer variable : Inkrementieren Sie jeden Frame, bis der gewünschte Wert erreicht ist. if Anweisung
  • : Überprüfen Sie, ob der Timer den erforderlichen Wert erreicht, und führen Sie den erforderlichen Code aus.

Beispiel:

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

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

Löse dein Problem:

Um beim Anzeigen von Text in Ihrem Skript eine Verzögerung zu erstellen, können Sie den folgenden Code verwenden:
  • iEnumerator showTextWithDelay () { Textui.text = "Willkommen im digitalen Zauberer!"; Rendite Return New WaitForSeconds (3F); Textui.text = ("Die höchste Zahl, die Sie wählen können, ist" max); Rendite Return New WaitForSeconds (3F); Textui.text = ("Die niedrigste Zahl, die Sie wählen können, ist" min); } StartCoroutine (showTextWithDelay ());
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3