Einheitsverzögerung Implementierung detaillierte Erläuterung
Eine Verzögerung der Einheit erzeugen, ist für die Verwaltung von Spielprozessen, die Sortierung von Ereignissen und die Simulation des Verhaltens der realen Welt von wesentlicher Bedeutung. Hier sind verschiedene Methoden, um eine Verzögerung zu erreichen:
<.> 1.
/ WaitForSeconds
WaitForSecondsRealtime
StartCoroutine
: Die Ausführung der angegebenen Zeit (betroffen von der Geschwindigkeit des Spiels). WaitForSeconds
: Die Ausführung der angegebenen Zeit (nicht von der Geschwindigkeit des Spiels betroffen).
WaitForSecondsRealtime
Verwenden Sie oder
Zyklus: Erhöhen Sie den Timer nach und nach, bis er den erforderlichen Wert erreicht.<code class="language-C#">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); }</code>
: Zahlen Sie die Ausführung eines Frame.
Time.deltaTime
while
for
yield return null
: Die Ausführung wurde ausgesetzt, bis die Bedingung wahr war.
<code class="language-C#">IEnumerator TimeBasedLoopExample() { // 旋转90度 transform.Rotate(Vector3.right * 90); // 等待4秒(受游戏速度影响) float timer = 0; while (timer < 4) { timer += Time.deltaTime; yield return null; } // 旋转40度 transform.Rotate(Vector3.right * 40); // 等待2秒(不受游戏速度影响) timer = 0; while (timer < 2) { timer += Time.deltaTime; yield return null; } // 旋转20度 transform.Rotate(Vector3.right * 20); }</code>
: Die Ausführung wird ausgesetzt, wenn die Bedingung wahr ist.
WaitUntil
WaitWhile
<示> Beispiel:
WaitUntil
WaitWhile
: ordnen Sie eine Funktion nach der Verzögerung der Verzögerung an.
: Ähnlich wie , aber die Funktion wird wiederholt mit einem angegebenen Zeitintervall aufgerufen.
<code class="language-C#">IEnumerator WaitUntilExample() { // 等待玩家分数达到100 yield return new WaitUntil(() => playerScore >= 100); // 加载下一关 SceneManager.LoadScene("NextLevel"); }</code>
Invoke
<.> 5. Basierend auf
Invoke
InvokeRepeating
: Jeder Frame erhöht sich, bis er den erforderlichen Wert erreicht.
Invoke
Beispiel:
<code class="language-C#">Invoke("FeedDog", 5); // 5秒后调用FeedDog() InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。</code>
Lösen Sie Ihr Problem: Update()
Das obige ist der detaillierte Inhalt vonWie implementieren Sie Verzögerungen in Einheit für Gameplay- und Ereignissequenzierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!