Speel meerdere geluiden tegelijk af

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Verificatieomgeving

Ramen
  • Voor Windows 11
Unity Editor
  • 2021.3.3f1
Input systeem pakket
  • 1.3.0

Vereisten voor deze tip

De volgende instellingen zijn vooraf gemaakt als uitgangspunt voor de beschrijving van deze tip.

Over het materiaal dat bij het monster is geleverd

Geluidseffecten zijn geleend van de volgende sites.

Informatie over audiobestanden

De volgende audiobestandsindelingen kunnen worden afgespeeld met de standaardfuncties van Unity: Bereid het van tevoren voor, want het zal in deze tips worden gebruikt.

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

Zie voor meer informatie de officiële Unity-documentatie.

Over het gelijktijdig afspelen van meerdere audio

In de vorige tips gebruikten we AudioSource om een audiobestand af te spelen, maar toen we probeerden een enkel geluid en meerdere geluiden te maken, verdween het vorige geluid. Als je bijvoorbeeld twee explosies in een game hebt, is het onnatuurlijk dat het eerste geluidseffect verdwijnt wanneer de tweede explosie een geluidseffect genereert. In dit gedeelte wordt beschreven hoe u hetzelfde geluid meerdere keren op elkaar kunt afspelen.

Stappen voor het gelijktijdig afspelen van audio

Hier zal ik uitleggen vanaf het punt waar ik een nieuw project heb gemaakt, maar als je Unity tot op zekere hoogte kent, kun je alleen de relevante delen uitsnijden en onthouden.

Deze keer wordt het geluidseffect afgespeeld telkens wanneer u op de knop klikt. Maak uw gebruikersinterface zoals weergegeven. De details zijn passend en goed.

Voeg een geluidsbestand toe door het in uw project neer te zetten.

Voeg audiobron toe aan de hiërarchie. In dit geval stelt u de audioclip niet rechtstreeks in op de audiobron.

Voeg een script toe. ButtonEvent Laat de naam staan als .

Het script ziet er als volgt uit:

using UnityEngine;

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

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

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

AudioSource Zie het als een klasse voor het besturen van audio, net als de vorige tips.

AudioClip is een klasse die audiogegevens opslaat. U kunt hier audiobestanden instellen.

AudioSource.PlayOneShot Als u het als argument doorgeeft aan de methode, kunt u de AudioClip audiogegevens afspelen. De audio die met deze methode wordt afgespeeld, wordt onafhankelijk geregeld. Als u deze methode opnieuw aanroept, wordt deze afzonderlijk van de vorige als een nieuwe stem afgespeeld. Daarom is het mogelijk om het geluid elke keer opnieuw af te spelen wanneer deze methode wordt aangeroepen.

Koppel het script aan EventSystem.

Stel voor "Audiobron" de "Audiobron" in die aan de hiërarchie is toegevoegd.

Stel bij "Audioclip" een audiobestand van het project in.

Stel ten slotte de methode in op de klikgebeurtenis van de knop.

Voer het spel uit en klik op de knop. Ik denk dat de geluidseffecten zullen spelen. Als u tijdens het afspelen nogmaals op de knop klikt, wordt het nieuwe geluid afgespeeld zonder dat het vorige geluid verdwijnt.

AudioClip Op deze manier is het nu mogelijk om hetzelfde geluid op elkaar af te spelen door de audio af te spelen via . Hierdoor kan de game spelen zonder dat het vorige geluid onnatuurlijk verdwijnt.

Nadelen bij het spelen met AudioClip

AudioClip Ik kon de audio op elkaar afspelen door het af te spelen met , maar integendeel, de volgende nadelen doen zich voor.

Het geluid wordt luidruchtig

Zoals je kunt zien als je continu op de knop klikt, overlappen de geluiden elkaar en wordt de harmonische die wordt afgespeeld steeds luider. Als u bijvoorbeeld een geluidseffect wilt afspelen wanneer een aanval in een spel toeslaat, Als er meerdere hits tegelijkertijd optreden zonder maatregelen te nemen, kunnen ze op een abnormaal volume worden afgespeeld.