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

ปรับปรุงหน้า :
วันที่สร้างเพจ :

สภาพแวดล้อมการตรวจสอบ

หน้าต่าง
  • หน้าต่าง 11
บรรณาธิการ Unity
  • ปี 2021.3.3f1
แพ็คเกจระบบอินพุต
  • 1.3.0

ข้อกําหนดเบื้องต้นสําหรับเคล็ดลับนี้

การตั้งค่าต่อไปนี้ได้ทําไว้ล่วงหน้าเพื่อเป็นหลักฐานสําหรับคําอธิบายของเคล็ดลับนี้

เกี่ยวกับวัสดุที่มาพร้อมกับตัวอย่าง

เอฟเฟกต์เสียงยืมมาจากไซต์ต่อไปนี้

เกี่ยวกับไฟล์เสียง

รูปแบบไฟล์เสียงต่อไปนี้สามารถเล่นได้ด้วยคุณสมบัติมาตรฐานของ Unity: โปรดเตรียมล่วงหน้าเพราะจะใช้ในเคล็ดลับเหล่านี้

  • WAV (.wav)
  • OggVorbis (.ogg)
  • MPEG เลเยอร์ 3 (.mp3)

สําหรับข้อมูลเพิ่มเติม โปรดดูเอกสาร Unity อย่างเป็นทางการ

เกี่ยวกับการเล่นเสียงพร้อมกันหลายรายการ

ในเคล็ดลับก่อนหน้านี้เราใช้ AudioSource เพื่อเล่นไฟล์เสียง แต่เมื่อเราพยายามสร้างเสียงเดียวและหลายเสียงเสียงก่อนหน้าก็หายไป ตัวอย่างเช่นหากคุณมีการระเบิดสองครั้งในเกมมันผิดธรรมชาติที่เอฟเฟกต์เสียงแรกจะหายไปเมื่อการระเบิดครั้งที่สองสร้างเอฟเฟกต์เสียง เนื้อหาส่วนนี้อธิบายวิธีการเล่นเสียงเดียวกันหลายครั้งซ้อนกัน

ขั้นตอนในการเล่นเสียงในเวลาเดียวกัน

ที่นี่ฉันจะอธิบายจากจุดที่ฉันสร้างโครงการใหม่ แต่ถ้าคุณรู้จัก Unity ในระดับหนึ่งคุณสามารถตัดเฉพาะส่วนที่เกี่ยวข้องและจดจําได้

คราวนี้เอฟเฟกต์เสียงจะเล่นทุกครั้งที่คุณคลิกปุ่ม สร้าง UI ของคุณตามที่แสดง รายละเอียดมีความเหมาะสมและดี

เพิ่มไฟล์เสียงโดยวางลงในโครงการของคุณ

เพิ่มแหล่งเสียงลงในลําดับชั้น ในกรณีนี้ คุณจะไม่ตั้งค่าคลิปเสียงไปที่ AudioSource โดยตรง

เพิ่มสคริปต์ ButtonEvent ทิ้งชื่อไว้เป็น .

สคริปต์มีลักษณะดังนี้:

using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
  [SerializeField] private AudioSource AudioSource;

  /// <summary>音声データ。</summary>
  [SerializeField] private AudioClip AudioClip;

  public void OnClickPlay()
  {
    // オーディオを再生します
    AudioSource.PlayOneShot(AudioClip);
  }
}

AudioSource คิดว่ามันเป็นชั้นเรียนสําหรับการควบคุมเสียงเช่นเดียวกับเคล็ดลับก่อนหน้านี้

AudioClip เป็นคลาสที่จัดเก็บข้อมูลเสียง คุณสามารถตั้งค่าไฟล์เสียงได้ที่นี่

AudioSource.PlayOneShot หากคุณส่งเป็นอาร์กิวเมนต์ให้กับวิธีการคุณสามารถเล่น AudioClip ข้อมูลเสียงได้ เสียงที่เล่นโดยวิธีนี้ถูกควบคุมอย่างอิสระ หากคุณเรียกวิธีนี้อีกครั้งวิธีการนี้จะเล่นเป็นเสียงใหม่แยกต่างหากจากวิธีก่อนหน้า ดังนั้นจึงเป็นไปได้ที่จะเล่นเสียงอีกครั้งทุกครั้งที่เรียกวิธีนี้

แนบสคริปต์กับ EventSystem

สําหรับ "แหล่งเสียง" ให้ตั้งค่า "แหล่งเสียง" ที่เพิ่มลงในลําดับชั้น

สําหรับ "คลิปเสียง" ให้ตั้งค่าไฟล์เสียงจากโปรเจ็กต์

สุดท้ายตั้งค่าวิธีการเป็นเหตุการณ์การคลิกของปุ่ม

เรียกใช้เกมและคลิกปุ่ม ฉันคิดว่าเอฟเฟกต์เสียงจะเล่น นอกจากนี้หากคุณคลิกปุ่มอีกครั้งในระหว่างการเล่นเสียงใหม่จะเล่นโดยไม่มีเสียงก่อนหน้าหายไป

AudioClipด้วยวิธีนี้ตอนนี้เป็นไปได้ที่จะเล่นเสียงเดียวกันที่ด้านบนของกันและกันโดยการเล่นเสียงผ่าน สิ่งนี้ทําให้เกมสามารถเล่นได้โดยไม่ต้องมีเสียงก่อนหน้าหายไปอย่างผิดธรรมชาติ

ข้อเสียเมื่อเล่นกับ AudioClip

AudioClip ฉันสามารถเล่นเสียงทับกันได้โดยเล่นโดยใช้ แต่ในทางกลับกันข้อเสียต่อไปนี้เกิดขึ้น

เสียงมีเสียงดัง

อย่างที่คุณเห็นหากคุณคลิกปุ่มอย่างต่อเนื่องเสียงที่ทับซ้อนกันและฮาร์มอนิกที่เล่นจะดังขึ้นและดังขึ้น ตัวอย่างเช่นหากคุณต้องการเล่นเอฟเฟกต์เสียงเมื่อการโจมตีเกิดขึ้นในเกม หากการตีหลายครั้งเกิดขึ้นพร้อมกันโดยไม่ต้องใช้มาตรการใด ๆ พวกเขาอาจถูกเล่นในระดับเสียงที่ผิดปกติ