В 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 ложных