Dans Unity, nous avons des choses spéciales pour les coroutines qui s'ajoutent au C # normal.
par exemple, nous pouvons utiliser
yield return WaitForSeconds(5.f);
faire attendre une coroutine 5 secondes avant de continuer.
Que faire yield return false;
et yield return true;
faire?
if (0)
ou if (null)
, contrairement à C et C ++.
yield return 0
fonctionne; apparemment à cause de la raison expliquée par MLM
yield
mot-clé existe depuis au moins C # 2.0. Unity ne fait que l'appeler coroutine et gère l'itérateur généré et les valeurs qui en sont retournées de manière à ce que vous puissiez provoquer des retards non bloquants dans l'exécution de votre code.
WaitForSeconds
n'est pas déclaré. Dès que vous déclarez une méthode appelée WaitForSeconds
qui prend un argument float et qui renvoie le type d'élément de l'énumération que vous implémentez, elle se compile à nouveau. Par conséquent, yield
n'est pas spécial pour l'unité. Si quoi que ce soit, la WaitForSeconds
méthode est spéciale à Unity, mais même dans ce cas, elle n'étend pas le langage C #, mais est simplement une méthode supplémentaire qui a été écrite en utilisant le C # standard.
yield return true
fait quelque chose de spécial. Maisyield return null
s'arrête simplement pour un cadre, donc je soupçonne que celayield return false
a exactement le même effet (égalementyield return 0
depuis 0 faux nul sont tous les mêmes sous le capot)