Memainkan berbilang bunyi pada masa yang sama

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran pengesahan

Windows
  • Windows 11
Penyunting Perpaduan
  • 2021.3.3F1
Pakej Sistem Input
  • 1.3.0

Prasyarat untuk petua ini

Tetapan berikut telah dibuat terlebih dahulu sebagai premis untuk penerangan petua ini.

Mengenai bahan yang disertakan dengan sampel

Kesan bunyi dipinjam dari laman web berikut.

Perihal fail audio

Format fail audio berikut boleh dimainkan dengan ciri standard Unity: Sila sediakannya terlebih dahulu kerana ia akan digunakan dalam petua ini.

  • WAV (.wav)
  • OggVorbis (.ogg)
  • MPEG lapisan 3 (.mp3)

Untuk maklumat lanjut, lihat dokumentasi Unity rasmi.

Perihal berbilang main balik audio serentak

Dalam petua sebelumnya, kami menggunakan AudioSource untuk memainkan fail audio, tetapi apabila kami cuba membuat satu bunyi dan berbilang bunyi, bunyi sebelumnya hilang. Sebagai contoh, jika anda mempunyai dua letupan dalam permainan, adalah tidak wajar untuk kesan bunyi pertama hilang apabila letupan kedua menghasilkan kesan bunyi. Bahagian ini menerangkan cara memainkan bunyi yang sama beberapa kali di atas satu sama lain.

Langkah untuk memainkan audio pada masa yang sama

Di sini, saya akan menerangkan dari sudut di mana saya membuat projek baru, tetapi jika anda tahu Perpaduan pada tahap tertentu, anda boleh memotong hanya bahagian yang berkaitan dan menghafalnya.

Kali ini, kesan bunyi akan dimainkan setiap kali anda mengklik butang. Buat UI anda seperti yang ditunjukkan. Butirannya sesuai dan baik.

Tambah fail bunyi dengan menjatuhkannya ke dalam projek anda.

Tambah Sumber Audio pada hierarki. Dalam kes ini, anda tidak akan mengesetkan klip audio terus kepada AudioSource.

Tambah skrip. ButtonEvent Tinggalkan nama sebagai .

Skrip kelihatan seperti ini:

using UnityEngine;

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

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

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

AudioSource Anggaplah ia sebagai kelas untuk mengawal audio, sama seperti petua sebelumnya.

AudioClip ialah kelas yang menyimpan data audio. Anda boleh mengesetkan fail audio di sini.

AudioSource.PlayOneShot Jika anda menyampaikannya sebagai argumen kepada kaedah, anda boleh memainkan AudioClip data audio. Audio yang dimainkan oleh kaedah ini dikawal secara bebas. Jika anda memanggil kaedah ini sekali lagi, ia akan dimainkan sebagai suara baru secara berasingan daripada yang sebelumnya. Oleh itu, adalah mungkin untuk memainkan bunyi sekali lagi setiap kali kaedah ini dipanggil.

Lampirkan skrip ke EventSystem.

Untuk "Sumber Audio", setkan "Sumber Audio" yang ditambahkan pada hierarki.

Untuk "Klip audio", tetapkan fail audio daripada projek.

Akhirnya, tetapkan kaedah ke acara klik butang.

Jalankan permainan dan klik butang. Saya fikir kesan bunyi akan bermain. Selain itu, jika anda mengklik butang sekali lagi semasa main balik, bunyi baru akan dimainkan tanpa bunyi sebelumnya hilang.

AudioClip Dengan cara ini, kini mungkin untuk memainkan bunyi yang sama di atas satu sama lain dengan memainkan audio melalui . Ini membolehkan permainan bermain tanpa bunyi sebelumnya hilang secara tidak wajar.

Kelemahan semasa bermain dengan AudioClip

AudioClip Saya dapat memainkan audio di atas satu sama lain dengan memainkannya menggunakan , tetapi sebaliknya, kelemahan berikut berlaku.

Bunyi menjadi bising

Seperti yang anda lihat jika anda mengklik butang secara berterusan, bunyi bertindih dan harmonik yang dimainkan menjadi lebih kuat dan lebih kuat. Sebagai contoh, jika anda ingin memainkan kesan bunyi apabila serangan melanda dalam permainan, Jika berbilang hits berlaku pada masa yang sama tanpa mengambil sebarang langkah, ia boleh dimainkan pada jumlah yang tidak normal.