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