Afspil flere lyde på samme tid

Side opdateret :
Dato for oprettelse af side :

Miljø til bekræftelse

Windows
  • Windows 11
Enhedslistens redaktør
  • 2021.3.3f1
Input System Pakke
  • 1.3.0

Forudsætninger for dette tip

Følgende indstillinger er foretaget på forhånd som en forudsætning for beskrivelsen af dette tip.

Om det materiale, der følger med prøven

Lydeffekter lånes fra følgende websteder.

Om lydfiler

Følgende lydfilformater kan afspilles med Unitys standardfunktioner: Forbered det på forhånd, fordi det vil blive brugt i disse tip.

  • WAV (.wav)
  • OggVorbis (.ogg)
  • MPEG-lag 3 (.mp3)

Du kan finde flere oplysninger i den officielle Unity-dokumentation.

Om flere samtidige lydafspilninger

I de tidligere tip brugte vi AudioSource til at afspille en lydfil, men da vi forsøgte at lave en enkelt lyd og flere lyde, forsvandt den forrige lyd. For eksempel, hvis du har to eksplosioner i et spil, er det unaturligt, at den første lydeffekt forsvinder, når den anden eksplosion genererer en lydeffekt. Dette afsnit beskriver, hvordan du afspiller den samme lyd flere gange oven på hinanden.

Trin til afspilning af lyd på samme tid

Her vil jeg forklare fra det punkt, hvor jeg oprettede et nyt projekt, men hvis du kender Unity til en vis grad, kan du kun skære de relevante dele ud og huske dem.

Denne gang afspilles lydeffekten, hver gang du klikker på knappen. Opret din brugergrænseflade som vist. Detaljerne er passende og gode.

Tilføj en lydfil ved at slippe den i dit projekt.

Føj lydkilde til hierarkiet. I dette tilfælde indstiller du ikke lydklippet direkte til AudioSource.

Tilføj et script. ButtonEvent Lad navnet være .

Scriptet ser sådan ud:

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 klasse til styring af lyd, ligesom de foregående tip.

AudioClip er en klasse, der gemmer lyddata. Du kan indstille lydfiler her.

AudioSource.PlayOneShot Hvis du sender det som et argument til metoden, kan du afspille AudioClip lyddataene. Lyden, der afspilles ved denne metode, styres uafhængigt. Hvis du kalder denne metode igen, afspilles den som en ny stemme separat fra den forrige. Derfor er det muligt at afspille lyden igen hver gang denne metode kaldes.

Vedhæft scriptet til EventSystem.

For "Audio Source" skal du indstille "Audio Source" tilføjet til hierarkiet.

For "Lydklip" skal du indstille en lydfil fra projektet.

Til sidst skal du indstille metoden til knappens klikhændelse.

Kør spillet og klik på knappen. Jeg tror, lydeffekterne vil spille. Hvis du klikker på knappen igen under afspilning, afspilles den nye lyd, uden at den forrige lyd forsvinder.

AudioClip På denne måde er det nu muligt at afspille den samme lyd oven på hinanden ved at afspille lyden via . Dette gør det muligt for spillet at spille uden at den forrige lyd forsvinder unaturligt.

Ulemper ved afspilning med AudioClip

AudioClip Jeg var i stand til at afspille lyden oven på hinanden ved at afspille den ved hjælp af , men tværtimod opstår følgende ulemper.

Lyden bliver støjende

Som du kan se, hvis du klikker på knappen kontinuerligt, overlapper lydene, og den harmoniske, der afspilles, bliver højere og højere. Hvis du f.eks. vil afspille en lydeffekt, når et angreb rammer i et spil, Hvis der forekommer flere hits på samme tid uden at tage nogen forholdsregler, kan de afspilles med en unormal lydstyrke.