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

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

สวัสดีครับ กลับมาพบกับเทคนิคดีๆในการเขียนเกมด้วย 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 ก็ไม่น่าจะมีปัญหากับเพื่อนๆอีกต่อไปแล้วล่ะครับ แล้วพบกันใหม่โอกาสหน้าครับ

 

 


By | 2018-01-23T23:59:08+00:00 January 24th, 2018|การใช้งาน Unity|0 Comments