การสร้างเสียงใน Game ให้สนุกและตื่นเต้น

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

นี่คือขั้นตอนและตัวอย่างโค้ดที่คุณสามารถใช้ได้:


1. สร้าง AudioSource Component

ก่อนอื่น วัตถุที่คุณต้องการให้มีเสียงจะต้องมี AudioSource Component ครับ คอมโพเนนต์นี้จะทำหน้าที่เป็น “ลำโพง” ที่จะเล่นเสียง

วิธีเพิ่ม AudioSource:

  1. เลือก GameObject ที่คุณต้องการในหน้าต่าง Hierarchy (เช่น Cube, Sphere หรือ GameObject เปล่าๆ)
  2. ในหน้าต่าง Inspector คลิกปุ่ม Add Component
  3. พิมพ์ค้นหา “Audio Source” แล้วเลือกเพื่อเพิ่มเข้ามา

2. สร้าง Script สำหรับควบคุมเสียง (C#)

ถัดมา คุณจะต้องสร้าง Script เพื่อเขียนโค้ดในการสั่งให้ AudioSource เล่นเสียงครับ

วิธีสร้าง Script:

  1. ในหน้าต่าง Project คลิกขวาในโฟลเดอร์ที่คุณต้องการ (เช่น Assets/Scripts)
  2. เลือก Create > C# Script
  3. ตั้งชื่อ 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 ที่คุณต้องการ และกำหนดไฟล์เสียงที่จะใช้

ขั้นตอนการตั้งค่า:

  1. ลาก (Drag) Script SoundPlayer จากหน้าต่าง Project ไปวางบน GameObject ที่คุณต้องการในหน้าต่าง Hierarchy (หรือลากไปวางในหน้าต่าง Inspector ของ GameObject นั้น)
  2. ในหน้าต่าง Inspector ของ GameObject นั้น คุณจะเห็น Component SoundPlayer เพิ่มเข้ามา
  3. ช่อง Sound To Play ใน Component SoundPlayer จะว่างอยู่
  4. ลากไฟล์ 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>(): ใช้สำหรับค้นหา Component AudioSource ที่แนบอยู่กับ GameObject เดียวกัน
    • gameObject.AddComponent<AudioSource>();: ถ้ายังไม่มี AudioSource อยู่ เราก็สามารถเพิ่มมันเข้าไปได้เลย
  • PlaySound(): ฟังก์ชันนี้คือหัวใจหลักในการเล่นเสียง เราใช้ audioSource.PlayOneShot(soundToPlay); เพื่อเล่นเสียงแบบครั้งเดียว (เหมาะสำหรับเสียงเอฟเฟกต์สั้นๆ เช่น เสียงปุ่มกด, เสียงยิง)
  • OnMouseDown(): เป็นฟังก์ชัน Callback ที่ถูกเรียกเมื่อวัตถุที่มี Collider และ Script นี้ถูกคลิกด้วยเมาส์ (เหมาะสำหรับวัตถุที่ต้องการให้ตอบสนองต่อการคลิก)
  • Update(): เป็นฟังก์ชันที่ถูกเรียกทุกๆ เฟรมเกม เราใช้มันเพื่อตรวจสอบการกดปุ่ม (เช่น Spacebar) เพื่อให้เสียงเล่น

สรุปขั้นตอนง่ายๆ:

  1. เตรียมไฟล์เสียง: นำไฟล์เสียงของคุณ (.wav, .mp3) เข้ามาใน Project ของ Unity.
  2. สร้าง GameObject: สร้างหรือเลือก GameObject ที่คุณต้องการให้มีเสียง.
  3. เพิ่ม AudioSource: เพิ่ม Component AudioSource ให้กับ GameObject นั้น.
  4. สร้าง Script: สร้าง C# Script (เช่น SoundPlayer).
  5. เขียนโค้ด: คัดลอกโค้ดข้างต้นลงใน Script.
  6. แนบ Script: ลาก Script ไปแนบกับ GameObject.
  7. กำหนดไฟล์เสียง: ลากไฟล์เสียงของคุณไปใส่ในช่อง Sound To Play ใน Inspector ของ Script.
  8. ทดสอบ: กด Play และทดสอบการทำงานของเสียง.

หวังว่าจะเป็นประโยชน์นะครับ!

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • เปิดใช้งานตลอด

บันทึกการตั้งค่า