Възпроизвеждане на няколко звука едновременно

Страницата се актуализира :
Дата на създаване на страница :

Среда за проверка

Уиндоус
  • Прозорци 11
Редактор на единство
  • 2021.3.3f1
Пакет на входната система
  • 1.3.0

Предпоставки за този съвет

Следните настройки са направени предварително като предпоставка за описанието на този съвет.

За материала, включен в пробата

Звуковите ефекти са заимствани от следните сайтове.

За аудио файловете

Следните аудио файлови формати могат да се възпроизвеждат със стандартните функции на Unity: Моля, подгответе го предварително, защото ще бъде използван в тези съвети.

  • WAV (.wav)
  • ОгВорбис (.ogg)
  • MPEG слой 3 (.mp3)

За повече информация вижте официалната документация на Unity.

За многократното едновременно възпроизвеждане на аудио

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

Стъпки за едновременно възпроизвеждане на аудио

Тук ще обясня от точката, в която създадох нов проект, но ако познавате Unity до известна степен, можете да изрежете само съответните части и да ги запомните.

Този път звуковият ефект ще се възпроизвежда всеки път, когато щракнете върху бутона. Създайте потребителския си интерфейс, както е показано. Детайлите са подходящи и добри.

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

Добавяне на аудио източник към йерархията. В този случай няма да зададете аудиоклипа директно на аудиоизточника.

Добавяне на скрипт. 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 Успях да възпроизведа аудиото един върху друг, като го пуснах с помощта на , но напротив, се появяват следните недостатъци.

Звукът става шумен

Както можете да видите, ако натискате бутона непрекъснато, звуците се припокриват и хармоникът, който се възпроизвежда, става все по-силен и по-силен. Например, ако искате да възпроизведете звуков ефект, когато атака удари в игра, Ако няколко попадения се случат едновременно, без да се вземат никакви мерки, те могат да бъдат изсвирени с необичаен обем.