Spela upp flera ljud samtidigt

Sidan uppdaterad :
Datum för skapande av sida :

Verifiering miljö

Windows
  • Fönster 11
Unity-redaktör
  • 2021.3.3F1
Paket för inmatningssystem
  • 1.3.0

Förutsättningar för det här tipset

Följande inställningar har gjorts i förväg som en förutsättning för beskrivningen av detta tips.

Om materialet som ingår i provet

Ljudeffekter lånas från följande webbplatser.

Om ljudfiler

Följande ljudfilformat kan spelas upp med Unitys standardfunktioner: Förbered det i förväg eftersom det kommer att användas i dessa tips.

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

Mer information finns i den officiella Unity-dokumentationen.

Om flera samtidiga ljuduppspelningar

I de tidigare tipsen använde vi AudioSource för att spela en ljudfil, men när vi försökte skapa ett enda ljud och flera ljud försvann det tidigare ljudet. Om du till exempel har två explosioner i ett spel är det onaturligt att den första ljudeffekten försvinner när den andra explosionen genererar en ljudeffekt. I det här avsnittet beskrivs hur du spelar upp samma ljud flera gånger ovanpå varandra.

Steg för att spela upp ljud samtidigt

Här kommer jag att förklara från den punkt där jag skapade ett nytt projekt, men om du känner till Unity till viss del kan du bara klippa ut relevanta delar och memorera dem.

Den här gången spelas ljudeffekten upp varje gång du klickar på knappen. Skapa användargränssnittet enligt bilden. Detaljerna är lämpliga och bra.

Lägg till en ljudfil genom att släppa den i projektet.

Lägg till ljudkälla i hierarkin. I det här fallet ställer du inte in ljudklippet direkt på AudioSource.

Lägg till ett skript. ButtonEvent Lämna namnet som .

Skriptet ser ut så här:

using UnityEngine;

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

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

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

AudioSource Tänk på det som en klass för att styra ljud, precis som de tidigare tipsen.

AudioClip är en klass som lagrar ljuddata. Du kan ställa in ljudfiler här.

AudioSource.PlayOneShot Om du skickar det som ett argument till metoden kan du spela upp AudioClip ljuddata. Ljudet som spelas med denna metod styrs oberoende. Om du anropar den här metoden igen spelas den som en ny röst separat från den föregående. Därför är det möjligt att spela ljudet igen varje gång denna metod kallas.

Koppla skriptet till EventSystem.

För "Ljudkälla" ställer du in "Ljudkälla" som läggs till i hierarkin.

För "Ljudklipp", ställ in en ljudfil från projektet.

Slutligen ställer du in metoden på knappens click-händelse.

Kör spelet och klicka på knappen. Jag tror att ljudeffekterna kommer att spela. Om du klickar på knappen igen under uppspelning spelas det nya ljudet upp utan att det tidigare ljudet försvinner.

AudioClip På detta sätt är det nu möjligt att spela samma ljud ovanpå varandra genom att spela upp ljudet via . Detta gör att spelet kan spela utan att det tidigare ljudet försvinner onaturligt.

Nackdelar när du spelar med AudioClip

AudioClip Jag kunde spela ljudet ovanpå varandra genom att spela det med , men tvärtom uppstår följande nackdelar.

Ljudet blir bullrigt

Som du kan se om du klickar på knappen kontinuerligt överlappar ljuden varandra och övertonen som spelas blir högre och högre. Om du till exempel vill spela en ljudeffekt när en attack träffar i ett spel, Om flera träffar inträffar samtidigt utan att vidta några åtgärder kan de spelas med onormal volym.