บทที่ 4: การเขียนสคริปต์เบื้องต้น (Basic Scripting)
4.1 การเขียน C# ใน Unity
การเขียนโค้ดใน Unity เป็นส่วนสำคัญในการกำหนดพฤติกรรมและการทำงานของวัตถุในเกม โดย Unity ใช้ภาษา C# ในการเขียนสคริปต์ การเขียนสคริปต์เบื้องต้นใน Unity ไม่ซับซ้อนและสามารถทำได้ง่าย ๆ โดยเริ่มจากการสร้างสคริปต์และเพิ่มเข้าไปใน GameObject
การเพิ่ม Script ให้กับ GameObject
1. การสร้างสคริปต์ใหม่:
-
- ใน Project Window คลิกขวาที่พื้นที่ว่างแล้วเลือก Create > C# Script จากนั้นตั้งชื่อสคริปต์ที่ต้องการ ตัวอย่างเช่น PlayerController เพื่อควบคุมการเคลื่อนที่ของตัวละคร
- เมื่อสร้างสคริปต์เสร็จแล้ว จะมีไฟล์สคริปต์ที่สามารถแก้ไขได้ในโปรแกรมแก้ไขโค้ด (Code Editor) เช่น Visual Studio
2. การเพิ่มสคริปต์ให้กับ GameObject:
-
- หลังจากสร้างสคริปต์แล้ว คุณสามารถเพิ่มสคริปต์นั้นให้กับ GameObject ใน Scene ได้โดย:
- ลากไฟล์สคริปต์จาก Project Window ลงไปใน GameObject ที่ต้องการใน Hierarchy หรือ Inspector
- เมื่อเพิ่มสคริปต์แล้ว จะเห็นสคริปต์ปรากฏใน Inspector ของ GameObject นั้น
- GameObject จะทำงานตามสคริปต์ที่เราเขียนไว้ในโค้ด ซึ่งเราสามารถแก้ไขโค้ดในไฟล์สคริปต์เพื่อกำหนดพฤติกรรมต่าง ๆ ของวัตถุได้
- หลังจากสร้างสคริปต์แล้ว คุณสามารถเพิ่มสคริปต์นั้นให้กับ GameObject ใน Scene ได้โดย:
การทำงานของฟังก์ชัน Start() และ Update()
ใน Unity สคริปต์พื้นฐานจะมีฟังก์ชันที่สำคัญสองฟังก์ชันคือ Start() และ Update() ซึ่งจะถูกเรียกใช้ในเวลาที่แตกต่างกัน:
1. ฟังก์ชัน Start():
-
- Start() คือฟังก์ชันที่ถูกเรียกใช้งานเพียงครั้งเดียวเมื่อวัตถุหรือ GameObject ที่สคริปต์ถูกแนบไปด้วยถูกสร้างขึ้นหรือเปิดใช้งาน
- ฟังก์ชันนี้เหมาะสำหรับการกำหนดค่าหรือการตั้งค่าเริ่มต้นที่ต้องการเพียงครั้งเดียว เช่น การกำหนดตำแหน่งเริ่มต้นของตัวละคร หรือการโหลดข้อมูลบางอย่างในตอนเริ่มเกม
- ตัวอย่างโค้ด:
void Start() {
Debug.Log("Game Started!"); // แสดงข้อความใน Console เมื่อเกมเริ่ม
}
2. ฟังก์ชัน Update():
-
- Update() คือฟังก์ชันที่ถูกเรียกใช้งานในทุก ๆ เฟรมของเกม ซึ่งหมายความว่าจะทำงานอย่างต่อเนื่องตลอดเวลาที่เกมกำลังทำงาน
- ฟังก์ชันนี้เหมาะสำหรับการควบคุมการเคลื่อนไหวหรือพฤติกรรมที่ต้องการการอัปเดตอย่างต่อเนื่อง เช่น การเคลื่อนที่ของตัวละคร การตรวจจับการกดปุ่มจากผู้เล่น หรือการหมุนวัตถุ
- ตัวอย่างโค้ด:
void Update() {
transform.Translate(0, 0, 1 * Time.deltaTime); // ทำให้วัตถุเคลื่อนที่ไปข้างหน้าอย่างต่อเนื่อง
}
ในตัวอย่างข้างต้น:
- Start() จะถูกเรียกเพียงครั้งเดียวเมื่อเริ่มเกม
- Update() จะถูกเรียกทุกเฟรมทำให้วัตถุเคลื่อนไหวอย่างต่อเนื่อง ซึ่งในกรณีนี้วัตถุจะเคลื่อนไปข้างหน้าในแกน Z โดยความเร็วจะขึ้นอยู่กับเวลา (Time.deltaTime)
หมายเหตุ: การใช้ Start() และ Update() อย่างเหมาะสมจะช่วยให้การควบคุมพฤติกรรมของ GameObject เป็นไปตามที่ต้องการ และสามารถสร้างการโต้ตอบที่เหมาะสมกับผู้เล่นได้