Воспроизведение нескольких звуков одновременно

Страница обновлена :
Дата создания страницы :

Среда верификации

Виндоус
  • Windows 11
Редактор Unity
  • 2021.3.3f1
Входной системный пакет
  • 1.3.0

Предпосылки для этого совета

Следующие настройки были сделаны заранее в качестве предпосылки для описания этого совета.

О материале, входящем в состав образца

Звуковые эффекты заимствованы со следующих сайтов.

Об аудиофайлах

Следующие форматы аудиофайлов могут воспроизводиться с помощью стандартных функций Unity: Пожалуйста, подготовьте его заранее, потому что он будет использоваться в этих советах.

  • WAV (.wav)
  • OggVorbis (.ogg)
  • MPEG уровень 3 (.mp3)

Дополнительные сведения см. в официальной документации по Unity.

О многократном одновременном воспроизведении звука

В предыдущих советах мы использовали AudioSource для воспроизведения аудиофайла, но когда мы попытались создать один звук и несколько звуков, предыдущий звук исчез. Например, если у вас есть два взрыва в игре, неестественно, что первый звуковой эффект исчезает, когда второй взрыв генерирует звуковой эффект. В этом разделе описывается, как воспроизводить один и тот же звук несколько раз друг на друга.

Шаги для одновременного воспроизведения звука

Здесь я объясню с того момента, когда я создал новый проект, но если вы знаете Unity в определенной степени, вы можете вырезать только соответствующие части и запомнить их.

На этот раз звуковой эффект будет воспроизводиться каждый раз, когда вы нажимаете кнопку. Создайте пользовательский интерфейс, как показано на рисунке. Детали уместны и хороши.

Добавьте звуковой файл, перетащив его в проект.

Добавьте источник звука в иерархию. В этом случае вы не будете устанавливать аудиоклип непосредственно в AudioSource.

Добавьте сценарий. ButtonEvent Оставьте имя как .

Скрипт выглядит следующим образом:

using UnityEngine;

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

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

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

AudioSource Думайте об этом как о классе для управления звуком, как и предыдущие советы.

AudioClip — это класс, в котором хранятся аудиоданные. Вы можете установить аудиофайлы здесь.

AudioSource.PlayOneShot Если вы передадите его в качестве аргумента методу, вы сможете воспроизвести AudioClip аудиоданные. Звук, воспроизводимый этим методом, контролируется независимо. Если вы вызовете этот метод еще раз, он будет воспроизводиться как новый голос отдельно от предыдущего. Поэтому можно воспроизводить звук заново каждый раз, когда вызывается этот метод.

Присоедините сценарий к EventSystem.

Для «Источника звука» установите «Источник звука», добавленный в иерархию.

Для «Аудиоклипа» установите аудиофайл из проекта.

Наконец, задайте метод для события нажатия кнопки.

Запустите игру и нажмите кнопку. Я думаю, что звуковые эффекты будут играть. Кроме того, если вы снова нажмете кнопку во время воспроизведения, новый звук будет воспроизводиться без исчезновения предыдущего звука.

AudioClip Таким образом, теперь можно воспроизводить один и тот же звук друг над другом, воспроизводя звук через . Это позволяет играть в игру без неестественного исчезновения предыдущего звука.

Недостатки при воспроизведении с AudioClip

AudioClip Я смог воспроизвести звук друг над другом, воспроизведя его с помощью , но, наоборот, возникают следующие недостатки.

Звук становится шумным

Как вы можете видеть, если вы нажимаете кнопку непрерывно, звуки накладываются друг на друга, и гармоника, которая воспроизводится, становится все громче и громче. Например, если вы хотите воспроизвести звуковой эффект при атаке в игре, Если несколько ударов происходят одновременно без принятия каких-либо мер, они могут воспроизводиться с ненормальной громкостью.