ใน Unity เรามีสิ่งพิเศษสำหรับ coroutines ที่เพิ่มเติมจาก C # ปกติ
ตัวอย่างเช่นเราสามารถใช้
yield return WaitForSeconds(5.f);
เพื่อให้ coroutine รอ 5 วินาทีก่อนดำเนินการต่อ
ทำอะไรyield return false;และyield return true;ทำอย่างไร
if (0)หรือif (null)แตกต่างจาก C และ C ++
yield return 0ใช้ได้ผล เห็นได้ชัดเนื่องจากเหตุผล MLM อธิบาย
yieldคำหลักที่ได้รับรอบตั้งแต่อย่างน้อย C # 2.0 All Unity จะเรียกมันว่าcoroutineและจัดการ iterator ที่สร้างขึ้นและค่าที่ส่งคืนมาจากมันในแบบที่คุณสามารถทำให้เกิดความล่าช้าที่ไม่ปิดกั้นในการเรียกใช้โค้ดของคุณ
WaitForSecondsไม่ได้ประกาศ ทันทีที่คุณประกาศเมธอดที่เรียกWaitForSecondsว่าใช้อาร์กิวเมนต์แบบลอยและส่งกลับชนิดองค์ประกอบของการแจงนับที่คุณกำลังใช้มันจะรวบรวมอีกครั้ง ดังนั้นจึงyieldไม่ใช่เรื่องพิเศษสำหรับ Unity หากมีสิ่งใดWaitForSecondsวิธีการพิเศษสำหรับ Unity แต่ถึงกระนั้นก็ไม่ได้ขยายภาษา C # แต่เป็นเพียงวิธีการพิเศษที่เขียนโดยใช้มาตรฐาน C #
yield return trueจะทำสิ่งที่พิเศษหรือไม่ แต่yield return nullเพียงหยุดเฟรมดังนั้นฉันสงสัยว่าyield return falseมีผลเหมือนกันแน่นอน (เช่นyield return 0ตั้งแต่ 0 โมฆะเท็จเหมือนกันทั้งหมดภายใต้ประทุน)