Учебники

Unity — Введение в Аудио

Есть причина, по которой игры делают акцент на аудио; это очень важно, чтобы добавить эстетическую ценность в игре. С самого первого понга можно услышать гудки и удары мяча, попеременно попадающих на весла. В то время это был действительно простой образец с короткими прямоугольными волнами, но что еще можно пожелать от дедушки всех видеоигр?

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

Существует ряд факторов, которые могут создать ненужную нагрузку на наш двигатель. Вместо этого мы пытаемся создать представление о том, как будет звучать наш звук в нашей игре, и строить вокруг этого. Это становится особенно заметным в 3D играх, где есть 3 оси, с которыми нужно иметь дело.

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

Unity предоставляет нам множество полезных инструментов и эффектов, таких как реверберация, эффект Доплера, микширование и эффекты в реальном времени и т. Д. Мы узнаем об этом в наших последующих главах.

Аудио Компоненты

В этом разделе мы узнаем о 3 основных компонентах, связанных со звуком в Unity.

AudioSource

Компонент AudioSource является основным компонентом, который вы присоединяете к GameObject, чтобы он воспроизводил звук. Он будет воспроизводить аудиоклип при запуске через микшер, через код или по умолчанию при пробуждении.

AudioClip — это просто звуковой файл, который загружается в AudioSource. Это может быть любой стандартный аудиофайл, например .mp3, .wav и т. Д. AudioClip также является компонентом внутри себя.

Источник звука

AudioListener

AudioListener — это компонент, который слушает все аудио, воспроизводимое в сцене, и передает его на динамики компьютера. Это действует как уши игры. Все аудио, которые вы слышите, находится в перспективе расположения этого AudioListener. Только один AudioListener должен быть в сцене, чтобы он функционировал должным образом. По умолчанию к основной камере подключен слушатель. Слушатель не имеет открытых свойств, о которых дизайнер хотел бы позаботиться.

Аудио слушатель

Аудио Фильтры

Выход AudioSource или прием AudioListener могут быть изменены с помощью Audio Filters. Это конкретные компоненты, которые могут изменять реверберацию, хорус, фильтрацию и т. Д. Каждый конкретный фильтр представляет собой свой собственный компонент с доступными значениями для настройки его звучания.

Аудио Фильтры

Воспроизведение звука

Давайте попробуем сделать кнопку, которая воспроизводит звук при нажатии. Для начала мы создадим спрайт Circle и сделаем его красным.

Создать кнопку спрайта круга

Теперь давайте подключим аудиоисточник к этому спрайту.

Прикрепите источник аудио Sprite

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

http://www.orangefreesounds.com/ding-sfx/

Загрузите звуковой эффект и перетащите его в Активы.

звуковой эффект

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

AudioClip

После того, как вы перетащите аудиоклип из Активов непосредственно в слот Аудиоклипа в Аудиоисточнике нашего спрайта, не забудьте отменить выбор «Воспроизвести при пробуждении» в свойствах Аудиоисточника; если вы этого не сделаете, звук начнет звучать в момент начала игры.

Играть на Awake

Теперь давайте перейдем к нашему коду. Создайте новый скрипт под названием «BellSound» и откройте его.

BellSound

Поскольку наш аудиоисточник управляется с помощью кода, мы сначала хотим получить ссылку на него. Мы будем использовать метод GetComponent, как и раньше.

public class BellSound : MonoBehaviour {
   AudioSource mySource;
   // Use this for initialization
   void Start () {
      mySource = GetComponent<AudioSource>();
}

Теперь давайте настроим метод обнаружения объекта, по которому щелкают. MonoBehaviour дает нам именно тот метод, который нам нужен, с именем OnMouseDown. Метод вызывается всякий раз, когда мышь щелкает в диапазоне коллайдера этого gameObject.

Поскольку мы еще не прикрепили коллайдер к нашей кнопке, давайте сделаем это сейчас.

прикрепил коллайдер

Нам не понадобится Rigidbody для этого; нам также не нужен доступ к этому коллайдеру по коду. Это просто должно быть там, чтобы метод работал.

Давайте проверим метод и посмотрим, работает ли он. Напишите следующий код в своем скрипте и прикрепите его к кнопке.

void OnMouseDown() {
   Debug.Log(“Clicked!”);
}

Как только вы сохраните сценарий и приложите его, играйте в игру. При нажатии на кнопку должно появиться сообщение в консоли.

породить сообщение

Вы сейчас в одном шаге от воспроизведения звука. Все, что вам нужно сделать сейчас, это вызвать метод Play в экземпляре Audio Source.

void OnMouseDown() {
   mySource.Play();
}

Сохраните ваш скрипт и запустите его в игре. Нажмите на кнопку, и вы должны услышать звук!

Примечание. Подумайте о создании кнопки, которая увеличивается по высоте при каждом нажатии на нее. Используйте mySource.pitch и счетчик и посмотрите, сможете ли вы это выяснить.)