Unity fournit une variété de méthodes pour attendre ou faire une pause de scripts.
<.> 1. Utilisez la correction et
Il s'agit de la méthode la plus simple et directe. Mettez le code que vous devez attendre dans la fonction Coroutine et utilisez le temps d'attente WaitForSeconds
spécifié. N'oubliez pas que la fonction Coroutine doit être démarrée avec .
WaitForSeconds
<.> 2. Utilisez la correction et 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); }
<<> et est qu'il utilise un temps imparfait pour attendre. WaitForSecondsRealtime
Afficher le temps d'attente WaitForSecondsRealtime
WaitForSeconds
Time.timeScale
Cette méthode convient aux scènes qui doivent afficher le temps d'attente, comme la minuterie. Il permet également les opérations d'interruption pendant le processus d'attente. 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. Utilisez la correction et fonction
en attendant que des conditions spécifiques se remplissent. Par exemple, attendez que le score du joueur atteigne 100 points avant de charger le niveau suivant.
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. Utilisez la correction et
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
attendre des conditions spécifiques n'est pas rempli. Par exemple, attendez que le joueur appuie sur la touche ESC et quitte le jeu.
<.> 6. Utiliser
fonctionprivate 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); }
Retarder la fonction d'appel. WaitWhile
et
private void Start() { StartCoroutine(InputWaiter()); } private IEnumerator InputWaiter() { Debug.Log("等待按下 Escape 键"); yield return new WaitWhile(() => !Input.GetKeyDown(KeyCode.Escape)); Debug.Log("按下 Escape 键。退出应用程序"); Quit(); } // ... (Quit 函数) ...
Méthode similaire 3, mais n'utilisez pas de coroutines. Cela appellera fréquemment une faible efficacité, non recommandée pour une attente à long terme. Invoke
La méthode à choisir dépend du scénario d'application spécifique. Pour une latence simple, ou
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!