Redați mai multe sunete în același timp

Pagina actualizată :
Data creării paginii :

Mediul de verificare

Windows
  • Ferestre 11
Unity Editor
  • 2021.3.3F1
Pachet sistem de intrare
  • 1.3.0

Cerințe preliminare pentru acest sfat

Următoarele setări au fost făcute în avans ca premisă pentru descrierea acestui sfat.

Despre materialul inclus în eșantion

Efectele sonore sunt împrumutate de pe următoarele site-uri.

Despre fișierele audio

Următoarele formate de fișiere audio pot fi redate cu caracteristicile standard ale Unity: Vă rugăm să-l pregătiți în avans, deoarece va fi folosit în aceste sfaturi.

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

Pentru mai multe informații, consultați documentația oficială a Unității.

Despre redarea audio simultană multiplă

În sfaturile anterioare, am folosit AudioSource pentru a reda un fișier audio, dar când am încercat să facem un singur sunet și mai multe sunete, sunetul anterior a dispărut. De exemplu, dacă aveți două explozii într-un joc, este nefiresc ca primul efect sonor să dispară atunci când a doua explozie generează un efect sonor. Această secțiune descrie cum să redați același sunet de mai multe ori unul peste celălalt.

Pași pentru redarea audio în același timp

Aici, voi explica din punctul în care am creat un nou proiect, dar dacă cunoașteți Unity într-o anumită măsură, puteți tăia doar părțile relevante și le puteți memora.

De data aceasta, efectul sonor va fi redat de fiecare dată când faceți clic pe buton. Creați-vă interfața de utilizare așa cum se arată. Detaliile sunt adecvate și bune.

Adăugați un fișier de sunet plasându-l în proiect.

Adăugați Sursă audio la ierarhie. În acest caz, nu veți seta clipul audio direct la AudioSource.

Adăugați un script. ButtonEvent Lăsați numele ca .

Scenariul arată astfel:

using UnityEngine;

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

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

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

AudioSource Gândiți-vă la aceasta ca la o clasă pentru controlul sunetului, la fel ca sfaturile anterioare.

AudioClip este o clasă care stochează date audio. Puteți seta fișiere audio aici.

AudioSource.PlayOneShot Dacă îl transmiteți ca argument metodei, puteți reda AudioClip datele audio. Sunetul redat prin această metodă este controlat independent. Dacă apelați din nou această metodă, aceasta va fi redată ca o voce nouă separat de cea anterioară. Prin urmare, este posibil să redați din nou sunetul de fiecare dată când se apelează această metodă.

Atașați scriptul la EventSystem.

Pentru "Sursă audio", setați "Sursă audio" adăugată la ierarhie.

Pentru "Clip audio", setați un fișier audio din proiect.

În cele din urmă, setați metoda la evenimentul de clic al butonului.

Rulați jocul și faceți clic pe buton. Cred că efectele sonore vor fi redate. De asemenea, dacă faceți clic din nou pe buton în timpul redării, noul sunet va fi redat fără ca sunetul anterior să dispară.

AudioClip În acest fel, acum este posibil să redați același sunet unul peste celălalt redând sunetul prin . Acest lucru permite jocului să se joace fără ca sunetul anterior să dispară nefiresc.

Dezavantaje la redarea cu AudioClip

AudioClip Am reușit să redau sunetul unul peste celălalt redându-l folosind , dar dimpotrivă, apar următoarele dezavantaje.

Sunetul devine zgomotos

După cum puteți vedea dacă faceți clic pe buton continuu, sunetele se suprapun și armonica redată devine din ce în ce mai puternică. De exemplu, dacă doriți să redați un efect sonor atunci când un atac lovește într-un joc, Dacă apar mai multe lovituri în același timp, fără a lua nicio măsură, acestea pot fi redate la un volum anormal.