บทที่ 4: การเขียนโค้ดด้วย C# เบื้องต้น
Unity ใช้ภาษา C# (ซีชาร์ป) เป็นภาษาหลักในการพัฒนาเกม การเรียนรู้การเขียนโค้ดใน Unity จะช่วยให้เราสามารถควบคุมการทำงานของวัตถุต่าง ๆ ในเกมได้ เช่น การเคลื่อนที่ การชนกัน หรือการตอบสนองต่อการกระทำของผู้เล่น ในบทนี้เราจะมาทำความเข้าใจพื้นฐานการเขียนโค้ดด้วย C# ใน Unity
การสร้างสคริปต์ใน Unity
ในการเริ่มเขียนโค้ด เราจำเป็นต้องสร้างสคริปต์เพื่อให้ Unity นำไปใช้กับวัตถุในเกม วิธีการสร้างสคริปต์มีดังนี้:
- คลิกขวาที่โฟลเดอร์ Assets ใน Project Window
- เลือก Create > C# Script
- ตั้งชื่อสคริปต์ตามต้องการ เช่น
PlayerMovement
- ดับเบิ้ลคลิกที่ไฟล์สคริปต์เพื่อเปิดในโปรแกรม Visual Studio (หรือโปรแกรมอื่นที่ใช้ในการเขียนโค้ดที่ถนัด)
โครงสร้างพื้นฐานของ C# ใน Unity
เมื่อเราเปิดสคริปต์ใน Visual Studio เราจะเห็นโครงสร้างพื้นฐานของโค้ด C# ที่ Unity สร้างขึ้นให้แล้ว ซึ่งประกอบไปด้วยฟังก์ชันหลักสองฟังก์ชันคือ:
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
// ฟังก์ชันนี้จะถูกเรียกเมื่อเริ่มเกม
void Start()
{
// ใช้สำหรับตั้งค่าเริ่มต้นต่าง ๆ
}
// ฟังก์ชันนี้จะถูกเรียกทุกเฟรมของเกม
void Update()
{
// ใช้สำหรับเขียนโค้ดการทำงานที่ต้องอัปเดตทุกเฟรม เช่น การเคลื่อนไหว
}
}
- Start(): ฟังก์ชันนี้จะถูกเรียกเมื่อเริ่มต้นเกมหรือเมื่อวัตถุถูกสร้างขึ้น ใช้สำหรับตั้งค่าพื้นฐาน เช่น การกำหนดตำแหน่งเริ่มต้นของวัตถุ
- Update(): ฟังก์ชันนี้จะถูกเรียกทุกเฟรมของเกม (หรือทุกครั้งที่หน้าจออัปเดต) ใช้สำหรับเขียนโค้ดการทำงานที่ต้องทำซ้ำ เช่น การเคลื่อนที่ของตัวละคร หรือการตรวจสอบการกดปุ่ม
การเคลื่อนที่ของวัตถุด้วย C#
ตัวอย่างต่อไปนี้จะแสดงวิธีการเขียนโค้ดเพื่อควบคุมการเคลื่อนที่ของตัวละครในแนวแกน X และ Y โดยใช้ปุ่มลูกศรบนคีย์บอร์ด:
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5f; // ความเร็วในการเคลื่อนที่
void Update()
{
// รับค่าการเคลื่อนที่จากปุ่มลูกศร
float moveX = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
float moveY = Input.GetAxis("Vertical") * speed * Time.deltaTime;
// เคลื่อนที่ตัวละครตามแกน X และ Y
transform.Translate(new Vector2(moveX, moveY));
}
}
ในโค้ดนี้ เราใช้ฟังก์ชัน Input.GetAxis()
เพื่อรับข้อมูลจากการกดปุ่มลูกศรซ้าย-ขวา (Horizontal) และบน-ล่าง (Vertical) แล้วใช้ฟังก์ชัน transform.Translate()
เพื่อเคลื่อนที่ตัวละครตามแกน X และ Y โดยมีการกำหนดความเร็ว (speed) ที่เราสามารถปรับได้ตามความต้องการ
การเพิ่มสคริปต์ให้กับวัตถุใน Unity
เมื่อเราสร้างสคริปต์เสร็จแล้ว ขั้นตอนต่อไปคือการนำสคริปต์ไปใช้กับวัตถุในเกม:
- เลือกวัตถุที่ต้องการ เช่น ตัวละครหลัก หรือวัตถุอื่น ๆ ใน Hierarchy
- ลากไฟล์สคริปต์จาก Project Window ไปวางบนวัตถุใน Inspector
- เมื่อสคริปต์ถูกเพิ่มแล้ว จะมีฟิลด์ให้เรากรอกค่าเช่น ความเร็ว (speed) ที่เราสามารถปรับได้ใน Inspector
การใช้งาน Debug เพื่อการตรวจสอบโค้ด
Debug เป็นเครื่องมือที่ช่วยในการตรวจสอบว่าโค้ดทำงานอย่างถูกต้องหรือไม่ ใน Unity เราสามารถใช้ Debug.Log()
เพื่อแสดงข้อมูลในคอนโซลขณะเกมกำลังรัน ตัวอย่างเช่น:
void Update()
{
Debug.Log("Player is moving");
}
เมื่อโค้ดนี้รัน เราจะเห็นข้อความ "Player is moving" ปรากฏใน Console ทุกครั้งที่ Update()
ถูกเรียก ซึ่งช่วยให้เราตรวจสอบว่าโค้ดทำงานถูกต้องหรือไม่