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 0fonctionne; apparemment à cause de la raison expliquée par MLM
yieldmot-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.
WaitForSecondsn'est pas déclaré. Dès que vous déclarez une méthode appelée WaitForSecondsqui 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, yieldn'est pas spécial pour l'unité. Si quoi que ce soit, la WaitForSecondsmé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 truefait quelque chose de spécial. Maisyield return nulls'arrête simplement pour un cadre, donc je soupçonne que celayield return falsea exactement le même effet (égalementyield return 0depuis 0 faux nul sont tous les mêmes sous le capot)