สร้างเกม Unity - เขียนโปรแกรมเบื้องต้น ตอนที่ 7 ฟังชั่น (function)

สร้างเกม ด้วย Unity - บทความนี้เราจะมาทำความรู้จักกับฟังชั่นกันครับ ว่ามันคืออะไร เขียนยังไง แล้วจะใช้ตอนไหนอย่างไร



ตามภาพด้านบน จะเห็นว่าพอเรา create หรือ new script ขึ้นมาใหม่ ทุกครั้ง โค้ดจะ สร้างฟังชั่น  start () {} กับ ฟั่ง update () {} ให้มาโดยอัตโนมัตินะครับ ซึ้ง 2 อันนี้แหละครับ ที่เรียกว่าฟังชั่น

ซึ้งในตัว Unity มีฟังชั่นที่เป็นฟังชั่นเฉพาะ การทำงานของฟังชั่น จะถูกเรียกตาม event หรือถ้าเป็นคำไทยอาจเปรียบได้ว่า จะถูกเรียกตามการทำงานในจังหวะต่างๆ

เช่น 
Start() จะถูกเรียกตอน เริ่มเกมส์
Update() จะถูกเรียกตลอดเวลา 

ถ้าลอง Debug.Log() ดูเราจะเห็นการทำงานของมันนะครับ และฟังชั่นที่เป็นฟังชั่นเฉพาะของ Unity นี้มีหลายฟังชั่นครับ เดี๋ยวบทความหน้า แอดมินจะหามาเขียนบทความให้ ว่ามันมีฟังชั่นอะไรบ้าง

ลองมาเริ่มฟังชั่นง่ายกันก่อนตามสเต็ป



จากรูปเราเขียน ฟังชั่นขึ้นมา ชื่อว่า printProfile() ภายในฟังชั่นเราอยากจะโค้ดอะไรก็ได้ ในตัวอย่างเราให้ Debug.Log() ข้อมูลโปรไฟล์เกมมาเล่นๆหนึ่งฟังชั่น

ย้อนกลับไปด้านบนที่ฟังชั่น Start() เราทราบดีกันอยู่แล้วว่า ฟังชั่น start() จะทำงานครั้งแรกครั้งเดียว เหมาะกับการทดสอบเขียนโปรแกรมอย่างยิ่ง ภายในฟังชั่น start() เราเรียกใช้ฟังชั่น printProfile(); 

รูปแบบการเรียกตามรูปภาพคือ ชื่อฟังชั่น วงเล็บเปิด-ปิด แล้วตามด้วยเครื่องหมาย ; 


ผลลัพธ์

ฟังชั่นง่ายๆตัวอย่างแรก ก็ไม่อยากเลยใช่มั๊ยครับ ซึ้งตัวอย่างนี้ แอดมินอยากให้จำลองว่า อยากจะแบ่งการ แสดงโปร์ไฟล์ออกมาจากโค้ดส่วนอื่น เพื่อให้โค้ดอ่านเข้าใจง่ายขึ้นและเป็นสัดส่วน


ลองมาดูตัวอย่างที่สอง เราสามารถส่งค่าตามเข้าไปใช้ในฟังชั่นนั่นๆ ได้ จะส่งไปกี่ค่าให้คั้นด้วยเครื่องหมาย  ,  

และแน่นอน เราส่งไปเท่าไหร่ ฟังชั่นนั้นก็ต้องรับตามจำนวนที่ส่งมา และชนิดของข้อมูล ต้องส่งไปให้ถูกตรงตามที่ฟังชั่นรับ ไม่ว่าเราจะส่งเป็นข้อค่าตรง หรือส่งเป็นตัวแปรก็ตาม


ตามตัวอย่างด้านบน เราดัดแปรงจากตัวอย่างแรก ให้ฟังชั่นสามารถรับค่ามาด้วยได้ เป็น string และอีกค่าเป็น int 

ซึ้งการรับค่าของฟังชั่นนั้น ภาษาโปรแกรมจะเรียกในส่วนนี้ว่า constructor (คอนสตัคเตอร์) 

กับไปที่ฝั่งที่เรียกกันบ้าง ในฟังชั่น start() เราจะเห็นว่า ตอนที่เรียกเราก็ต้องใส่ค่าเข้าไปตามที่ฟังชั่นรับ ในตัวอย่าง ใส่ค่าชนิด string และ int ซึ่งจะใส่โดยตรงหรือตัวแปรก็ได้



ผลลัพธ์

ลองดูเพื่อให้เข้าใจมากขึ้นว่าเราอยากจะใช้ฟังชั่นตอนไหน


เราเรียกฟังชั่นกันกี่รอบก็ได้ ที่ไหนก็ได้ แต่ตามตัวอย่างด้านบนเราเรียกแค่ 4 ครั้ง แต่ละครั้งส่งค่าไปไม่เหมือนกัน ผลลัพธ์ที่ได้เลยไม่เหมือนกัน



ผลลัพธ์

ตอนนี้เพื่อนๆอาจมองออกแล้วว่า ฟังชั่นสามารถไปดัดแปรงเขียนโปรแกรมได้ยังไงบ้าง ซึ้งตามตัวอย่างจะเห็นว่า เหมาะกับการทำงานของโค้ดที่ทำงานเหมือนกัน แต่ต้องการผลลัพธ์ที่ต่างกันออกไปแยกส่วนของใครของมันนั้นเอง

สุดท้าย นอกจากฟังชั่นที่ขึ้นต้นด้วย void แล้ว ยังมีฟังชั่นที่ประกาศเป็นชนิดตัวแปรใดๆก็ได้


ตามตัวอย่าง เมื่อเราประกาศฟังชั่นเป็นชนิดของตัวแปรเมื่อไหร่ ให้เราจำไว้ว่า 
จะต้องมีคำสั่ง return xxx ซึ้งถ้าเป็น ฟังชั่น void ไม่มี return

xxx คือ ค่าที่จะส่งกลับไปใช้ตอนเรียก ซึ้งค่านั้นๆจะต้องตรงตามที่ประกาศขึ้นมาของฟังชั่น ตามตัวอย่างเป็น string ก็ return ออกไปเป็น string ซึ้งจะเป็นค่าตรงหรือตัวแปรก็ได้

และตอนเรียกฟังชั่นที่เป็นประเภทตัวแปรนั้น จะถูกมองว่าเป็นข้อมูลทันที ซึ้งในที่นี้ข้อมูลเป็น string 
เราไม่สามารถเรียกเฉยๆแบบ ฟังชัั่น void ได้ จะต้องมีการสร้างตัวแปรมารองรับ หรือว่าเอาไปใช้ให้ถูกวิธี คือให้เรามองว่า มันคือ string นั้นเอง


ผลลัพธืเหมือนกัน

สรุปฟังชั่นจะเหมาะกับการเขียนโค้ด ที่การทำงานนั้นๆ เกิดขึ้นบ่อย แต่ข้อมูลไม่สามารถเดาได้ หรือแตกต่างกัน เช่น โปรแกรมเครื่องคิดเลข เราอาจจะมี ฟังชั่น บวก ลบ คูณ หาร แบ่งแยกออกไป มีตัวแปรที่เก็บตัวตั้ง ตัวบวก ลบ คูณ หาร และ return ผลลัพธ์ เพียงเท่านี้ โค้ดของเราก็จะง่าย สั้น และเข้าใจง่ายขึ้น

ลองคิดดูถ้าไม่มี ฟังชั่น เราต้อง if else กันกี่ที หรือมีกี่ loop ไม่อยากจะคิดเลยใช่ไหมครับ









สามารถอ่านบทความที่เกี่ยวข้องของเราที่นี่  >> รวมลิ้งค์บทความ สร้างเกมด้วย Unity

1 ความคิดเห็น:

ขับเคลื่อนโดย Blogger.