ใน 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 โมฆะเท็จเหมือนกันทั้งหมดภายใต้ประทุน)