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
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:
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.
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.
ienumerator waituntilexample ()
{
// attendez que le score du joueur atteigne 100
rendement return new waitluntil (() => playerCore> = 100);
// Chargez le niveau suivant
SceneManager.Loadscene ("Nextlevel");
} 4.
: 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.
invoke ("feeddog", 5);
InvokerePeating ("MovePlayer", 0,5f, 0,2f);
]
time.deltatime
: utilisé pour mesurer le temps entre les trames.
If
Invoke("FeedDog", 5); // 5秒后调用FeedDog()
InvokeRepeating("MovePlayer", 0.5f, 0.2f); // 每0.2秒调用MovePlayer(),持续0.5秒。
Exemple:
résoudre votre problème:
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