Есть причина, по которой игры делают акцент на аудио; это очень важно, чтобы добавить эстетическую ценность в игре. С самого первого понга можно услышать гудки и удары мяча, попеременно попадающих на весла. В то время это был действительно простой образец с короткими прямоугольными волнами, но что еще можно пожелать от дедушки всех видеоигр?
В реальной жизни многие вещи влияют на то, как вы воспринимаете звук; скорость объекта, тип сценария и направление его движения.
Существует ряд факторов, которые могут создать ненужную нагрузку на наш двигатель. Вместо этого мы пытаемся создать представление о том, как будет звучать наш звук в нашей игре, и строить вокруг этого. Это становится особенно заметным в 3D играх, где есть 3 оси, с которыми нужно иметь дело.
В Unity у нас есть специальные компоненты для восприятия и воспроизведения звука. Эти компоненты работают вместе, чтобы создать правдоподобную звуковую систему, которая кажется естественной для игры.
Unity предоставляет нам множество полезных инструментов и эффектов, таких как реверберация, эффект Доплера, микширование и эффекты в реальном времени и т. Д. Мы узнаем об этом в наших последующих главах.
Аудио Компоненты
В этом разделе мы узнаем о 3 основных компонентах, связанных со звуком в Unity.
AudioSource
Компонент AudioSource является основным компонентом, который вы присоединяете к GameObject, чтобы он воспроизводил звук. Он будет воспроизводить аудиоклип при запуске через микшер, через код или по умолчанию при пробуждении.
AudioClip — это просто звуковой файл, который загружается в AudioSource. Это может быть любой стандартный аудиофайл, например .mp3, .wav и т. Д. AudioClip также является компонентом внутри себя.
AudioListener
AudioListener — это компонент, который слушает все аудио, воспроизводимое в сцене, и передает его на динамики компьютера. Это действует как уши игры. Все аудио, которые вы слышите, находится в перспективе расположения этого AudioListener. Только один AudioListener должен быть в сцене, чтобы он функционировал должным образом. По умолчанию к основной камере подключен слушатель. Слушатель не имеет открытых свойств, о которых дизайнер хотел бы позаботиться.
Аудио Фильтры
Выход AudioSource или прием AudioListener могут быть изменены с помощью Audio Filters. Это конкретные компоненты, которые могут изменять реверберацию, хорус, фильтрацию и т. Д. Каждый конкретный фильтр представляет собой свой собственный компонент с доступными значениями для настройки его звучания.
Воспроизведение звука
Давайте попробуем сделать кнопку, которая воспроизводит звук при нажатии. Для начала мы создадим спрайт Circle и сделаем его красным.
Теперь давайте подключим аудиоисточник к этому спрайту.
Чтобы объект воспроизводил звук, мы должны дать ему один. Давайте использовать этот звуковой эффект для наших целей.
http://www.orangefreesounds.com/ding-sfx/
Загрузите звуковой эффект и перетащите его в Активы.
Когда Unity импортирует этот актив в виде звукового файла, он автоматически преобразуется в аудиоклип . Поэтому вы можете перетащить этот аудиоклип из ресурсов непосредственно в слот аудиоклипа в аудиоисточнике нашего спрайта.
После того, как вы перетащите аудиоклип из Активов непосредственно в слот Аудиоклипа в Аудиоисточнике нашего спрайта, не забудьте отменить выбор «Воспроизвести при пробуждении» в свойствах Аудиоисточника; если вы этого не сделаете, звук начнет звучать в момент начала игры.
Теперь давайте перейдем к нашему коду. Создайте новый скрипт под названием «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 и счетчик и посмотрите, сможете ли вы это выяснить.)