В Unity у нас есть некоторые специальные вещи для сопрограмм, которые являются дополнительными к обычному C #.
например, мы можем использовать
yield return WaitForSeconds(5.f);
чтобы сопрограмма подождала 5 секунд, прежде чем продолжить.
Что делать yield return false;и yield return true;делать?
if (0)или if (null), в отличие от C и C ++.
yield return 0работает; по- видимому , из-за причин MLM объяснил
yieldКлючевое слово было вокруг , так как , по крайней мере C # 2.0. Все, что делает Unity, это вызывает его сопрограмму и обрабатывает сгенерированный итератор и возвращаемые из него значения таким образом, что вы можете вызвать неблокирующие задержки при выполнении вашего кода.
WaitForSecondsне объявлено. Как только вы объявляете вызываемый метод, WaitForSecondsкоторый принимает аргумент float и возвращает тип элемента перечисления, которое вы реализуете, он снова компилируется. Следовательно, yieldне является особенным для Unity. Во всяком случае, этот WaitForSecondsметод является особенным для Unity, но даже тогда он не расширяет язык C #, а просто является дополнительным методом, который был написан с использованием стандартного C #.
yield return trueделает что-то особенное. Ноyield return nullпросто делает паузу для кадра, так что я подозреваю, что этоyield return falseимеет точно такой же эффект (также,yield return 0поскольку 0 ложных