Jouer plusieurs sons en même temps

Page mise à jour :
Date de création de la page :

Environnement de vérification

Windows
  • Fenêtres 11
Éditeur Unity
  • 2021.3.3f1
Package système d’entrée
  • 1.3.0

Conditions préalables à cette astuce

Les paramètres suivants ont été définis à l’avance comme prémisse pour la description de cette astuce.

À propos du matériel inclus avec l’échantillon

Les effets sonores sont empruntés aux sites suivants.

À propos des fichiers audio

Les formats de fichiers audio suivants peuvent être lus avec les fonctionnalités standard de Unity : Veuillez le préparer à l’avance car il sera utilisé dans ces conseils.

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

Pour plus d’informations, consultez la documentation officielle de Unity.

À propos de la lecture audio simultanée multiple

Dans les conseils précédents, nous avons utilisé AudioSource pour lire un fichier audio, mais lorsque nous avons essayé de créer un seul son et plusieurs sons, le son précédent a disparu. Par exemple, si vous avez deux explosions dans un jeu, il n’est pas naturel que le premier effet sonore disparaisse lorsque le second éclat génère un effet sonore. Cette section décrit comment jouer le même son plusieurs fois les uns sur les autres.

Étapes pour lire l’audio en même temps

Ici, je vais expliquer à partir du point où j’ai créé un nouveau projet, mais si vous connaissez Unity dans une certaine mesure, vous ne pouvez découper que les parties pertinentes et les mémoriser.

Cette fois, l’effet sonore sera lu chaque fois que vous cliquez sur le bouton. Créez votre interface utilisateur comme indiqué. Les détails sont appropriés et bons.

Ajoutez un fichier audio en le déposant dans votre projet.

Ajoutez Source audio à la hiérarchie. Dans ce cas, vous ne définirez pas le clip audio directement sur AudioSource.

Ajoutez un script. ButtonEvent Conservez le nom .

Le script ressemble à ceci :

using UnityEngine;

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

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

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

AudioSource Pensez-y comme une classe pour contrôler l’audio, tout comme les conseils précédents.

AudioClip est une classe qui stocke des données audio. Vous pouvez définir des fichiers audio ici.

AudioSource.PlayOneShot Si vous le passez en tant qu’argument à la méthode, vous pouvez lire les AudioClip données audio. L’audio lu par cette méthode est contrôlé indépendamment. Si vous appelez à nouveau cette méthode, elle sera jouée comme une nouvelle voix séparément de la précédente. Par conséquent, il est possible de jouer à nouveau le son chaque fois que cette méthode est appelée.

Attachez le script à EventSystem.

Pour « Source audio », définissez la « Source audio » ajoutée à la hiérarchie.

Pour « Clip audio », définissez un fichier audio à partir du projet.

Enfin, définissez la méthode sur l’événement click du bouton.

Lancez le jeu et cliquez sur le bouton. Je pense que les effets sonores vont jouer. De plus, si vous cliquez à nouveau sur le bouton pendant la lecture, le nouveau son sera lu sans que le son précédent ne disparaisse.

AudioClip De cette façon, il est maintenant possible de jouer le même son l’un sur l’autre en jouant l’audio via . Cela permet au jeu de jouer sans que le son précédent ne disparaisse de manière anormale.

Inconvénients lors de la lecture avec AudioClip

AudioClip J’ai pu lire l’audio les uns sur les autres en le lisant en utilisant , mais au contraire, les inconvénients suivants se produisent.

Le son devient bruyant

Comme vous pouvez le voir si vous cliquez sur le bouton en continu, les sons se chevauchent et l’harmonique jouée devient de plus en plus forte. Par exemple, si vous voulez jouer un effet sonore lorsqu’une attaque frappe dans un jeu, Si plusieurs coups se produisent en même temps sans prendre de mesures, ils peuvent être joués à un volume anormal.