การใช้ Yield แบบต่างๆเพื่อหน่วงเวลาใน Couroutine
schedule
24/01/2018

สวัสดีครับ กลับมาพบกับเทคนิคดีๆในการเขียนเกมด้วย Unity กันอีกครั้งนะครับ วันนี้ผมนำสคริปที่เกี่ยวกับ Coroutine ใน Unity มาฝากกันครับ
เวลาเราสร้างฟังชั่นก์ใน Unity เนี่ย การทำงานใน Fucntion ก็จะทำงานทันทีที่เรียกใช้เลยตั้งแต่ต้นจนจบ แต่หากเราใช้ Couroutine เราจะสามารถหน่วงเวลาการทำงานในแต่ละบรรทัดได้ครับ ซึ่งลักษณะการสร้าง Coroutine จะมีลักษณะดังนี้ครับ
IEnumerator Fade() { for (float f = 1f; f >= 0; f -= 0.1f) { Color c = renderer.material.color; c.a = f; renderer.material.color = c; yield return null; } }ซึ่งเวลาเราเรียกใช้ฟังชั่นก์แบบ Couroutine เราต้องเรียกพิเศษนิดนึง โดยจะมีวิธีการเรียกแบบนี้ครับ
StartCoroutine("Fade");ซึ่งการหน่วงเวลาในฟังชั่นแบบ Coroutine จะมีวิธีการหลายๆรูปแบบครับ มาดูกันเลย
yield return null : หยุดรอฟังชั่นก์ Update รอบต่อไป yield return new WaitForFixedUpdate(); หยุดรอฟังชั่นก์ FixedUpdate ครั้งต่อไป yield return new WaitForEndOfFrame(); // หยุดรอทุกอย่างในเฟรมเล่นจนครบหมดแล้ว yield return new WaitForSeconds(float seconds); // หยุดรอตามวินาที yield return new WWW("MY/WEB/REQUEST"); // หยุดรอเว็บรีเควสเสร็จถ้าเพื่อนๆจำวิธีการหน่วงเวลาแบบต่างๆนี้ได้ การใช้ Couroutine ก็ไม่น่าจะมีปัญหากับเพื่อนๆอีกต่อไปแล้วล่ะครับ แล้วพบกันใหม่โอกาสหน้าครับ

กลับหน้ารวม