Einheit bietet eine Vielzahl von Methoden, um Skripte zu warten oder zu pausieren.
<.> 1. verwenden Sie Korrektur und
Dies ist die einfachste und direkte Methode. Setzen Sie den Code ein, den Sie in der Coroutine -Funktion warten müssen, und verwenden Sie die angegebene Wartezeit WaitForSeconds
. Denken Sie daran, dass die Coroutine -Funktion mit gestartet werden muss.
WaitForSeconds
<.> 2. verwenden Sie Korrektur und StartCoroutine(yourFunction)
private void Start() { StartCoroutine(Waiter()); } private IEnumerator Waiter() { // 旋转 90 度 transform.Rotate(new Vector3(90, 0, 0), Space.World); // 等待 4 秒 yield return new WaitForSeconds(4); // 旋转 40 度 transform.Rotate(new Vector3(40, 0, 0), Space.World); // 等待 2 秒 yield return new WaitForSeconds(2); // 旋转 20 度 transform.Rotate(new Vector3(20, 0, 0), Space.World); }
<<> und besteht darin, dass es eine unfare Zeit zum Warten verwendet. WaitForSecondsRealtime
Wartezeit WaitForSecondsRealtime
WaitForSeconds
Time.timeScale
Diese Methode eignet sich für Szenen, die Wartezeit wie Timer anzeigen müssen. Es ermöglicht auch Interrupt -Operationen während des Wartenprozesses. WaitForSecondsRealtime
private void Start() { StartCoroutine(WaiterRealtime()); } private IEnumerator WaiterRealtime() { // 旋转 90 度 transform.Rotate(new Vector3(90, 0, 0), Space.World); // 等待 4 秒 (不受 Time.timeScale 影响) yield return new WaitForSecondsRealtime(4); // 旋转 40 度 transform.Rotate(new Vector3(40, 0, 0), Space.World); // 等待 2 秒 (不受 Time.timeScale 影响) yield return new WaitForSecondsRealtime(2); // 旋转 20 度 transform.Rotate(new Vector3(20, 0, 0), Space.World); }
Time.deltaTime
<.> 4. Verwenden Sie Korrektur und Funktion
Warten auf bestimmte Bedingungen. Warten Sie beispielsweise, bis der Spielerwert 100 Punkte erreicht, bevor Sie das nächste Level laden.
private bool quit = false; private void Start() { StartCoroutine(WaiterWithTimer()); } private IEnumerator WaiterWithTimer() { float counter = 0; float waitTime = 4; while (counter < waitTime) { counter += Time.deltaTime; Debug.Log("已等待时间:" + counter + " 秒"); if (quit) yield break; yield return null; } // ... 剩余代码 ... }
<.> 5. Verwenden Sie Korrektur und
private bool quit = false; // ... (WaiterWithTimer 函数) ... private IEnumerator WaitTimer(float waitTime) { float counter = 0; while (counter < waitTime) { counter += Time.deltaTime; Debug.Log("已等待时间:" + counter + " 秒"); if (quit) yield break; yield return null; } }
WaitUntil
auf bestimmte Bedingungen warten, wird nicht erfüllt. Warten Sie beispielsweise darauf, dass der Spieler die ESC -Taste drückt und das Spiel beendet.
<.> 6. Verwenden Sie
Funktionprivate float playerScore = 0; private int nextScene = 0; private void Start() { StartCoroutine(SceneLoader()); } private IEnumerator SceneLoader() { Debug.Log("等待玩家分数达到 >= 10"); yield return new WaitUntil(() => playerScore >= 10); Debug.Log("玩家分数 >= 10。加载下一关"); nextScene++; SceneManager.LoadScene(nextScene); }
Aufruffunktion verzögern. WaitWhile
und
private void Start() { StartCoroutine(InputWaiter()); } private IEnumerator InputWaiter() { Debug.Log("等待按下 Escape 键"); yield return new WaitWhile(() => !Input.GetKeyDown(KeyCode.Escape)); Debug.Log("按下 Escape 键。退出应用程序"); Quit(); } // ... (Quit 函数) ...
ähnliche Methode 3, verwenden jedoch keine Coroutinen. Dies wird häufig aufrufen, eine geringe Effizienz, die für das langfristige Warten nicht empfohlen wird. Invoke
Welche Methode zur Auswahl hängt vom spezifischen Anwendungsszenario ab. Für die einfache Latenz ist oder
zu warten.
Das obige ist der detaillierte Inhalt vonWie kann man einfach ein Skript in Einheit warten/schlafen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!