Unity Essence ☀️Ультимативное руководство по Audio Mixer: используйте «Два человека в путешествии», чтобы объяснить его использование.
Unity Essence ☀️Ультимативное руководство по Audio Mixer: используйте «Два человека в путешествии», чтобы объяснить его использование.

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

Пока субъект спит, давайте быстренько разберем звуковую систему этой игры.

🟥 Проверьте настройки звука в игре

В настройке звуковых эффектов «Два человека в очереди» все звуки разделены на две части:

  • Громкость диалога
  • громкость музыки

И добавлена ​​опция «Основная громкость» для управления громкостью этих двух звуков.

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

Это проще всего понять, но по мере появления различных типов AudioSources управление будет становиться все более громоздким. Тогда давайте сегодня представим наш встроенный инструмент Unity: Audio Mixer. Давайте посмотрим, сможете ли вы легко управлять звуковыми эффектами проекта и элегантно писать код.

🟧 Анализ звуковых эффектов «Два человека»

Мы видим интерфейс настроек для двух человек подряд, который делит звуковые эффекты на:

  • Громкость диалога Группа
  • громкость музыки Группа

Мы можем разделить его на следующие основные части:

  • Группа звуковых эффектов диалога
  • фоновая музыка
  • Звуковые эффекты пользовательского интерфейса
  • Интерактивные звуковые эффекты сущностей
  • Звуковые эффекты животных

Итак, можем ли мы иметь мощные инструменты для выполнения следующих функций:

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

🟨 Как использовать AudioMixer для иерархического управления звуковыми эффектами проекта.

Мы хотим реализовать вышеуказанную функцию и надеемся, что верхний уровень будет контролировать нижний уровень. Контролируйте слой за слоем.

Разве эта древовидная диаграмма, нисходящая классификация и иерархический контроль не являются хорошим решением? Давайте взглянем на AudioMixer, наконец созданный на основе этой идеи:

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

TalkMixer,Это группа звуковых эффектов диалога.,Под MasterMixer,Управляется MasterMixerиз.

MusicMixer,Это музыкальная группа,Мы видим, что в группах ниже много звуковых эффектов.,Верхним родительским объектом звукового эффекта является Master. Это означает, что мы можем контролировать размер каждого звукового эффекта индивидуально.,Вы также можете управлять общей громкостью,Для управления громкостью этой группы.

🟩Практическое обучение проектам

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

Вы также можете добавить vx в конце статьи, чтобы получить исходный код проекта.

1️⃣ Импортируйте музыкальные ресурсы

Импортируйте наши музыкальные ресурсы. Мы загрузим и поиграем в Ресурсы позже.

2️⃣ Настройте аудиомикшер

🔶 Создать аудиомикшер

Мы видим, что MasterMixer, MusicMixer и TalkMixer на рисунке выше — это три AudioMixer, которые можно создать, щелкнув правой кнопкой мыши в «Ресурсах».

1️⃣Создайте AudioMixer:

Как AudioMixer выглядит в Assets:

2️⃣Отрегулируйте положение узла После того, как мы создадим его в Assets, MasterMixer станет корневым узлом, и нам нужно использовать оставшиеся два в качестве его дочерних узлов.

  • Дважды щелкните MasterMixer, чтобы открыть панель AudioMixer.
  • Перетащите два AudioMixer ниже в MasterMixer и дважды щелкните Master во всплывающем диалоговом окне, чтобы завершить настройку.

3️⃣Добавьте звуковые эффекты в группах. Выбираем MusicMixer, мы добавим к нему звуковые эффекты, обратите внимание на положение узла!

🔶 Откройте параметры аудиомикшера

После того, как аудиомикшер создан, кодом пока нельзя управлять напрямую.

Как и в случае с нашим конечным автоматом анимации, нам нужно знать имя MusicMixer внутри, прежде чем мы сможем найти его с помощью кода и управлять им.

MusicMixer:

  • Каждый звуковой эффект — это MusicMixer. Наши BackgroundMusic, UIMusic, EntityMusic и т. д.
  • Даже группы звуковых эффектов MasterMixer, MusicMixer и TalkMixer будут содержать объект Master. Этот объект также является MusicMixer.
  • В конечном итоге мы используем эти свойства MusicMixer для достижения эффекта управления звуковыми эффектами проекта.

Поскольку мы хотим контролировать только основные звуковые эффекты, громкость диалогов и громкость музыки, Поэтому нам нужно только установить параметры трех групп звуковых эффектов: MasterMixer, MusicMixer и TalkMixer. Возьмем MasterMixer в качестве примера:

  • Выберите MasterMixer и нажмите на Мастер внутри него.
  • Щелкните правой кнопкой мыши «Том» на панели проверки и выберите «Expos xxx», чтобы записать
  • Выберите «Открытые параметры», дважды щелкните параметр, который мы только что открыли, и назовите его «MasterMixer» (тот, кто открыт, может иметь то же имя, что и тот, чтобы нам было легче его найти)

Две другие операции аналогичны завершению экспонирования параметров.

3️⃣ Создайте источник воспроизведения звука AudioSource и назначьте его MusicMixer.

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

Как использовать аудиомикшер:

  • Первоначально, когда мы воспроизводили звук, мы просто использовали музыку напрямую в AudioSource.Play. Audiolistener на камере отслеживал звук в проекте и воспроизводил его.
  • Теперь параметр вывода AudioSource устанавливает наш MusicMixer. После воспроизведения звука на него влияет AudioMixer и, наконец, выводится на Audiolistener. Управляя AudioMixer, мы можем контролировать громкость различных категорий проекта.

1️⃣Создайте базовый источник воспроизведения звука.

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

Отмените все PlayOnAwake и отмените цикл. Фоновую музыку необходимо проверить Loop Эффект пользовательского интерфейса следующий:

2️⃣Задание соответствует MusicMixer

В разделе «Ресурсы» ниже перенесено только что созданное нами MusicMixer. Просто перетащите их в соответствующее место.

4️⃣ Настройте панель воспроизведения музыки

🔶 Создать интерфейс пользовательского интерфейса

Эффект такой, как показано ниже:

  • Ползунок общей громкости управляет общей громкостью.
  • Громкость диалога Управление «Разговор» из громкости
  • громкость музыка Управление громкостью других звуковых эффектов
🔶 Напишите код для воспроизведения музыки

Следующий код используется для присвоения значения кнопке слева, при нажатии которой воспроизводится звуковой эффект.

Язык кода:javascript
копировать
using UnityEngine;
using UnityEngine.UI;

public class AudioPlayCon : MonoBehaviour
{
    //Назначение создаём изAudioSource
    public AudioSource[] audioSources;
    
    //Назначение создаём изBtn
    public Button[] audioBtn;

    void Start()
    {
        audioBtn[0].onClick.AddListener(() =>
        {
            audioSources[0].clip ??= Resources.Load<AudioClip>("myTalkMusic");
            audioSources[0].Play();
        });
        
        audioBtn[1].onClick.AddListener(() =>
        {
            audioSources[1].clip ??= Resources.Load<AudioClip>("myBackgroundMusic");
            audioSources[1].Play();
        });
        
        audioBtn[2].onClick.AddListener(() =>
        {
            audioSources[2].clip ??= Resources.Load<AudioClip>("myUIMusic");
            audioSources[2].Play();
        });
        
        audioBtn[3].onClick.AddListener(() =>
        {
            audioSources[3].clip ??= Resources.Load<AudioClip>("myEntityMusic");
            audioSources[3].Play();
        });
        
        audioBtn[4].onClick.AddListener(() =>
        {
            audioSources[4].clip ??= Resources.Load<AudioClip>("myAnimalMusic");
            audioSources[4].Play();
        });
    }
}

5️⃣ Ползунок для управления изменением громкости

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

Итак, далее мы настраиваем код для ползунка выше, чтобы добиться эффекта перетаскивания ползунка и изменения громкости.

🔶 Напишите код для управления слайдером

Наш ползунок предназначен для управления «динамиком» Audio Mixer. Введите параметры и значения, которыми нужно управлять. Достичь эффекта управления звуковыми эффектами.

Язык кода:javascript
копировать
using UnityEngine;
using UnityEngine.Audio;
 
public class MixerCon : MonoBehaviour
{
    public AudioMixer masterMixer;
    public AudioMixer musicMixer;
    public AudioMixer talkMixer;

    //Функция ниже использует динамический метод float, присвойте значение нашему слайдеру
    
    // Управление общей громкостью
    public void SetMasterMixerVolume(float volume)
    {
        // MasterVolume предоставляет нам параметры MasterVolume.
        masterMixer.SetFloat("MasterMixer", volume);
    }
 
    // Контролируйте громкость речи
    public void SetTalkMixerlume(float volume)
    {
        talkMixer.SetFloat("TalkMixer",volume);
    }
 
    // контрольгромкость музыки
    public void SetMusicMixerVolume(float volume)
    {
        musicMixer.SetFloat("MusicMixer", volume);
    }
}
🔶Настройте порог слайдера

Поскольку мы видим, что звуковой порог MusicMixer находится в пределах -80-20 децибел, Поэтому мы устанавливаем MinValue и MaxValue ползунка на -80 и 20.

🟦 Краткое изложение идей кода

Часть создания AudioMixer:

  • первый,Мы классифицируем музыку по большинству базовых единиц по категориям MusicMixer
  • затем,Затем сгруппируйте модули База в AudioMixer.,Нам нужно контролировать громкость или звуковые эффекты этих групп.
  • Assets создает эти группы AudioMixer и создает соответствующие модули из База в группе Group.
  • Выставить параметры группы для вызовов программ

Часть воспроизведения пользовательского интерфейса:

  • Создайте соответствующий AudioSource для каждого модуля Базы.,AudioSourceиз Выходные свойства,Присвойте значения этим единицам База. Теперь используйте эти единицы базы для вывода,Звук идет через AudioMixer,Затем вывод AudioListener
  • Код воспроизведения остается прежним: сначала назначьте AudioClip, а затем GetComponent().Play();

Часть управления слайдером: 1. Контролируется громкость каждого AudioMixer, которую можно использовать для управления размером различных типов музыки в проекте. 2. Дочерний узел AudioMixer управляется родительским узлом AudioMixer. Из-за наших отношений перетаскивания все остальные AudioMixer являются дочерними узлами MasterMixer, поэтому MasterMixer может управлять глобальной громкостью. Код управления:

Язык кода:javascript
копировать
masterMixer.SetFloat("MasterMixer", volume);

Эта статья служит 《GameFramework》 Базовые знания фреймворка, Если вы хотите улучшить себя и изучить фреймворк Unity, вы можете узнать об этом. 《GameFramework》 ~

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose