Відтворення кількох звуків одночасно

Сторінка оновлюється :
Дата створення сторінки :

Середовище перевірки

Вікна
  • вікна 11
Редактор єдності
  • 2021.3.3f1
Пакет системи введення
  • 1.3.0

Передумови для цієї поради

Наступні настройки були зроблені заздалегідь як передумова для опису цієї поради.

Про матеріал, що входить до складу зразка

Звукові ефекти запозичені з наступних сайтів.

Про аудіофайли

Наступні формати аудіофайлів можна відтворювати зі стандартними функціями Unity: Будь ласка, підготуйте його заздалегідь, тому що він буде використаний в цих порадах.

  • WAV (.wav)
  • OggVorbis (.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 Я зміг відтворити аудіо один на одному, відтворивши його за допомогою , але навпаки, виникають наступні недоліки.

Звук стає гучним

Як видно, якщо натискати кнопку безперервно, звуки перекриваються, і гармоніка, яка відтворюється, стає все голосніше і голосніше. Наприклад, якщо ви хочете відтворити звуковий ефект при ударі атаки в грі, Якщо кілька ударів відбуваються одночасно, не вживаючи жодних заходів, вони можуть відтворюватися на аномальній гучності.