บทที่ 8: การเพิ่มเสียงและ UI ในเกม

เสียงและ UI (User Interface) เป็นส่วนประกอบที่สำคัญในการทำให้เกมมีความสมจริงและประสบการณ์การเล่นที่ดีขึ้น เสียงช่วยเพิ่มอรรถรสในการเล่นเกม ส่วน UI ช่วยให้ผู้เล่นสามารถโต้ตอบและรับข้อมูลจากเกมได้อย่างชัดเจน ในบทนี้เราจะเรียนรู้การเพิ่มเสียงและการสร้าง UI เบื้องต้นในเกม Unity


การเพิ่มเสียงในเกม

Unity รองรับการเพิ่มเสียง (Audio) เข้ามาในเกมได้หลายรูปแบบ ไม่ว่าจะเป็นเสียงพื้นหลัง (Background Music) หรือเสียงเอฟเฟกต์ (Sound Effects) ในการเล่นเสียงในเกมนั้น เราต้องใช้ Audio Source และ Audio Clip

ขั้นตอนการเพิ่มเสียงพื้นหลัง

  1. นำเข้าไฟล์เสียงที่ต้องการใช้ในเกม โดยคลิกขวาที่ Assets ใน Project Window แล้วเลือก Import New Asset จากนั้นเลือกไฟล์เสียงที่ต้องการนำเข้า
  2. คลิกเลือกวัตถุที่ต้องการให้เป็นแหล่งเสียง (เช่น กล้องหลัก หรือวัตถุอื่น ๆ ในฉาก)
  3. ไปที่แถบ Inspector และคลิก Add Component จากนั้นเลือก Audio Source
  4. ในฟิลด์ Audio Clip ให้เลือกไฟล์เสียงที่นำเข้ามา
  5. ทำเครื่องหมายที่ Loop หากต้องการให้เสียงเล่นต่อเนื่อง
  6. ปรับระดับเสียง (Volume) ตามที่ต้องการ

เมื่อทำตามขั้นตอนข้างต้นแล้ว เมื่อเริ่มเกม เสียงพื้นหลังจะเริ่มเล่นทันที

การเพิ่มเสียงเอฟเฟกต์ สำหรับเสียงเอฟเฟกต์ เช่น เสียงกระโดด หรือเสียงชนกัน สามารถทำได้โดยการเพิ่ม Audio Source ให้กับวัตถุที่ต้องการ และควบคุมการเล่นเสียงผ่านโค้ด ตัวอย่างเช่น:


using UnityEngine;

public class PlayerSound : MonoBehaviour
{
    public AudioSource jumpSound;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            jumpSound.Play(); // เล่นเสียงเมื่อผู้เล่นกดปุ่ม Space
        }
    }
}

ในตัวอย่างนี้ เมื่อผู้เล่นกดปุ่ม Space เสียงกระโดดที่กำหนดไว้ใน Audio Source จะถูกเล่น


การสร้าง UI ในเกม

UI เป็นส่วนที่ช่วยให้ผู้เล่นสามารถโต้ตอบกับเกมและรับข้อมูลจากเกมได้ เช่น การสร้างปุ่มเมนู แถบพลังชีวิต หรือกล่องข้อความ คะแนน เกมส่วนใหญ่มี UI ที่ปรากฏบนหน้าจอตลอดเวลา เช่น คะแนนผู้เล่นหรือตัวเลือกเมนู

การสร้างปุ่ม UI

  1. ไปที่ Hierarchy คลิกขวาเลือก UI > Button เพื่อสร้างปุ่ม
  2. Unity จะสร้าง Canvas สำหรับจัดการ UI ให้โดยอัตโนมัติ และปุ่มจะถูกสร้างอยู่ใน Canvas
  3. ใน Inspector ของปุ่ม เราสามารถปรับเปลี่ยนข้อความของปุ่มได้ในฟิลด์ Text
  4. สามารถเพิ่มฟังก์ชันให้ปุ่มโดยการคลิกที่ On Click แล้วลากวัตถุที่มีสคริปต์ที่ต้องการให้ปุ่มควบคุมมาวาง

ตัวอย่างการเขียนโค้ดควบคุมการทำงานของปุ่ม:


using UnityEngine;
using UnityEngine.UI;

public class GameManager : MonoBehaviour
{
    public Button startButton;

    void Start()
    {
        startButton.onClick.AddListener(StartGame);
    }

    void StartGame()
    {
        Debug.Log("Game Started!");
        // เพิ่มโค้ดสำหรับเริ่มเกม
    }
}

ในตัวอย่างนี้ เมื่อผู้เล่นคลิกที่ปุ่ม startButton ฟังก์ชัน StartGame จะถูกเรียกและเกมจะเริ่มต้นขึ้น


การสร้างแถบพลังชีวิต (Health Bar)

แถบพลังชีวิตเป็น UI ที่ใช้บ่อยในเกม Unity สามารถสร้างได้โดยใช้ Slider เพื่อแสดงสถานะพลังชีวิตของผู้เล่น

  1. ไปที่ Hierarchy คลิกขวาเลือก UI > Slider เพื่อสร้างแถบพลังชีวิต
  2. ปรับตำแหน่งของแถบพลังชีวิตใน Inspector และเปลี่ยนขนาดหรือสีของแถบตามที่ต้องการ
  3. ใช้โค้ดเพื่ออัปเดตแถบพลังชีวิตตามสถานะของผู้เล่น ตัวอย่างเช่น:

using UnityEngine;
using UnityEngine.UI;

public class HealthManager : MonoBehaviour
{
    public Slider healthBar;
    public float maxHealth = 100f;
    private float currentHealth;

    void Start()
    {
        currentHealth = maxHealth;
        healthBar.maxValue = maxHealth;
        healthBar.value = currentHealth;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.H))
        {
            TakeDamage(10); // ลดพลังชีวิตเมื่อกดปุ่ม H
        }
    }

    void TakeDamage(float damage)
    {
        currentHealth -= damage;
        healthBar.value = currentHealth;
    }
}

ในตัวอย่างนี้ เมื่อผู้เล่นกดปุ่ม H พลังชีวิตของผู้เล่นจะลดลง 10 หน่วย และแถบพลังชีวิตจะอัปเดตตามค่าที่เปลี่ยนแปลง

การแสดงคะแนนในเกม (Score Display)

การแสดงคะแนนเป็นส่วนสำคัญในการติดตามความคืบหน้าของผู้เล่น การเพิ่ม UI สำหรับแสดงคะแนนสามารถทำได้ง่าย ๆ ดังนี้:

  1. ไปที่ Hierarchy คลิกขวาเลือก UI > Text เพื่อสร้างกล่องข้อความสำหรับแสดงคะแนน
  2. ปรับแต่งฟอนต์ ขนาด และสีของข้อความตามที่ต้องการ
  3. ใช้โค้ดเพื่ออัปเดตคะแนนเมื่อผู้เล่นทำกิจกรรมต่าง ๆ ในเกม ตัวอย่างโค้ด:

using UnityEngine;
using UnityEngine.UI;

public class ScoreManager : MonoBehaviour
{
    public Text scoreText;
    private int score = 0;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            AddScore(10); // เพิ่มคะแนนเมื่อผู้เล่นกดปุ่ม Space
        }
    }

    void AddScore(int points)
    {
        score += points;
        scoreText.text = "Score: " + score.ToString();
    }
}

ในตัวอย่างนี้ เมื่อผู้เล่นกดปุ่ม Space คะแนนจะเพิ่มขึ้น 10 และข้อความแสดงคะแนนจะอัปเดตตามค่าใหม่


Free Joomla templates by Ltheme