การสร้างเสียงใน Game ให้สนุกและตื่นเต้น
ในการทำ Unity Class Object เพื่อให้วัตถุที่ต้องการแสดงเสียง คุณสามารถทำได้โดยสร้าง Script (C#) ขึ้นมาแล้วแนบ (Attach) Script นั้นเข้ากับ GameObject ที่คุณต้องการให้มีเสียงครับ
นี่คือขั้นตอนและตัวอย่างโค้ดที่คุณสามารถใช้ได้:

1. สร้าง AudioSource Component
ก่อนอื่น วัตถุที่คุณต้องการให้มีเสียงจะต้องมี AudioSource Component ครับ คอมโพเนนต์นี้จะทำหน้าที่เป็น “ลำโพง” ที่จะเล่นเสียง
วิธีเพิ่ม AudioSource:
- เลือก GameObject ที่คุณต้องการในหน้าต่าง Hierarchy (เช่น Cube, Sphere หรือ GameObject เปล่าๆ)
- ในหน้าต่าง Inspector คลิกปุ่ม Add Component
- พิมพ์ค้นหา “Audio Source” แล้วเลือกเพื่อเพิ่มเข้ามา
2. สร้าง Script สำหรับควบคุมเสียง (C#)
ถัดมา คุณจะต้องสร้าง Script เพื่อเขียนโค้ดในการสั่งให้ AudioSource เล่นเสียงครับ
วิธีสร้าง Script:
- ในหน้าต่าง Project คลิกขวาในโฟลเดอร์ที่คุณต้องการ (เช่น Assets/Scripts)
- เลือก Create > C# Script
- ตั้งชื่อ Script ว่า
SoundPlayer
(หรือชื่ออื่นๆ ตามที่คุณต้องการ)
ตัวอย่างโค้ดใน Script SoundPlayer.cs
:
C#
using UnityEngine;
public class SoundPlayer : MonoBehaviour
{
// ตัวแปรสำหรับเก็บไฟล์เสียง (AudioClip)
public AudioClip soundToPlay;
// ตัวแปรสำหรับอ้างอิง AudioSource component
private AudioSource audioSource;
void Awake()
{
// ตรวจสอบว่ามี AudioSource component อยู่แล้วหรือไม่
// ถ้าไม่มี ให้เพิ่ม AudioSource component เข้าไป
audioSource = GetComponent<AudioSource>();
if (audioSource == null)
{
audioSource = gameObject.AddComponent<AudioSource>();
}
}
// ฟังก์ชันสำหรับเล่นเสียง
public void PlaySound()
{
// ตรวจสอบว่ามีไฟล์เสียงที่กำหนดไว้และ AudioSource พร้อมใช้งาน
if (soundToPlay != null && audioSource != null)
{
audioSource.PlayOneShot(soundToPlay); // เล่นเสียงแบบครั้งเดียว (ไม่วนซ้ำ)
// ถ้าต้องการเล่นแบบวนซ้ำ ให้ใช้ audioSource.Play(); และตั้งค่า loop ใน Inspector
}
else
{
Debug.LogWarning("Missing AudioClip or AudioSource on " + gameObject.name);
}
}
// ตัวอย่างการเล่นเสียงเมื่อวัตถุถูกคลิก (สำหรับวัตถุที่มี Collider)
void OnMouseDown()
{
PlaySound();
}
// ตัวอย่างการเล่นเสียงเมื่อกดปุ่ม Space
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
PlaySound();
}
}
}
3. แนบ Script และกำหนดค่าใน Unity Editor
เมื่อคุณสร้าง Script แล้ว คุณจะต้องแนบมันเข้ากับ GameObject ที่คุณต้องการ และกำหนดไฟล์เสียงที่จะใช้
ขั้นตอนการตั้งค่า:
- ลาก (Drag) Script
SoundPlayer
จากหน้าต่าง Project ไปวางบน GameObject ที่คุณต้องการในหน้าต่าง Hierarchy (หรือลากไปวางในหน้าต่าง Inspector ของ GameObject นั้น) - ในหน้าต่าง Inspector ของ GameObject นั้น คุณจะเห็น Component
SoundPlayer
เพิ่มเข้ามา - ช่อง Sound To Play ใน Component
SoundPlayer
จะว่างอยู่ - ลากไฟล์ AudioClip (เช่น .wav, .mp3) ที่คุณต้องการใช้จากหน้าต่าง Project มาใส่ในช่อง Sound To Play
4. ทดสอบ
ตอนนี้คุณสามารถกดปุ่ม Play ใน Unity Editor เพื่อทดสอบได้เลยครับ
- ถ้าคุณใช้
OnMouseDown()
คุณสามารถคลิกที่วัตถุนั้นใน Game View เพื่อให้เสียงเล่น - ถ้าคุณใช้
Update()
และตรวจสอบInput.GetKeyDown(KeyCode.Space)
คุณสามารถกดปุ่ม Spacebar เพื่อให้เสียงเล่น
คำอธิบายเพิ่มเติม:
public AudioClip soundToPlay;
: นี่คือตัวแปรที่เราประกาศให้เป็นpublic
เพื่อให้คุณสามารถลากไฟล์เสียง (AudioClip) เข้ามาใส่ได้จาก Unity Editor ครับprivate AudioSource audioSource;
: นี่คือตัวแปรสำหรับอ้างอิงถึง Component AudioSource ที่เราจะใช้ในการเล่นเสียงAwake()
: เป็นฟังก์ชันที่ถูกเรียกครั้งแรกเมื่อ Script ถูกโหลดและเปิดใช้งาน (ก่อนStart()
) เราใช้มันเพื่อดึงAudioSource
Component มาเก็บไว้ในตัวแปรaudioSource
GetComponent<AudioSource>()
: ใช้สำหรับค้นหา ComponentAudioSource
ที่แนบอยู่กับ GameObject เดียวกันgameObject.AddComponent<AudioSource>();
: ถ้ายังไม่มีAudioSource
อยู่ เราก็สามารถเพิ่มมันเข้าไปได้เลย
PlaySound()
: ฟังก์ชันนี้คือหัวใจหลักในการเล่นเสียง เราใช้audioSource.PlayOneShot(soundToPlay);
เพื่อเล่นเสียงแบบครั้งเดียว (เหมาะสำหรับเสียงเอฟเฟกต์สั้นๆ เช่น เสียงปุ่มกด, เสียงยิง)OnMouseDown()
: เป็นฟังก์ชัน Callback ที่ถูกเรียกเมื่อวัตถุที่มี Collider และ Script นี้ถูกคลิกด้วยเมาส์ (เหมาะสำหรับวัตถุที่ต้องการให้ตอบสนองต่อการคลิก)Update()
: เป็นฟังก์ชันที่ถูกเรียกทุกๆ เฟรมเกม เราใช้มันเพื่อตรวจสอบการกดปุ่ม (เช่น Spacebar) เพื่อให้เสียงเล่น
สรุปขั้นตอนง่ายๆ:
- เตรียมไฟล์เสียง: นำไฟล์เสียงของคุณ (.wav, .mp3) เข้ามาใน Project ของ Unity.
- สร้าง GameObject: สร้างหรือเลือก GameObject ที่คุณต้องการให้มีเสียง.
- เพิ่ม AudioSource: เพิ่ม Component AudioSource ให้กับ GameObject นั้น.
- สร้าง Script: สร้าง C# Script (เช่น
SoundPlayer
). - เขียนโค้ด: คัดลอกโค้ดข้างต้นลงใน Script.
- แนบ Script: ลาก Script ไปแนบกับ GameObject.
- กำหนดไฟล์เสียง: ลากไฟล์เสียงของคุณไปใส่ในช่อง Sound To Play ใน Inspector ของ Script.
- ทดสอบ: กด Play และทดสอบการทำงานของเสียง.
หวังว่าจะเป็นประโยชน์นะครับ!