Как изменить источник звука для его воспроизведения через другое аудио устройство?

Как изменить вывод звука в коде, используя разные audio source'ы для разных категорий звуков в игре? При попытке использовать разные audio source'ы для фоновой музыки и звуков эффектов, звук продолжает идти только через audio source, примененный к объекту с кодом. Что может быть причиной этого?
  • 28 октября 2023 г. 14:08
Ответы на вопрос 1
Одной из возможных причин того, что звук все равно идет через один и тот же audio source, может быть неправильная настройка аудио-миксера в вашей игре. 

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

Сначала вам нужно создать объект AudioListener в сцене (например, просто добавьте его к главной камере сцены). Этот объект будет слушать звуки и применять настройки аудио-миксера. 

Затем вы можете изменять настройки аудио-миксера в коде, чтобы выбрать разные audio source'ы для разных категорий звуков. Например, вы можете использовать AudioMixerGroup в Unity, чтобы создать группы для разных категорий звуков и присоединить к ним разные audio source'ы. Затем вы можете использовать функцию SetOutputAudioMixerGroup() для каждого audio source'а, чтобы выбрать нужную группу для воспроизведения звука. 

Вот пример кода, демонстрирующий, как изменить вывод звука для разных категорий звуков:

```csharp
using UnityEngine;
using UnityEngine.Audio;

public class SoundManager : MonoBehaviour
{
    public AudioMixerGroup backgroundMusicMixerGroup;
    public AudioMixerGroup soundEffectsMixerGroup;

    public AudioSource backgroundMusicSource;
    public AudioSource soundEffectsSource;

    void Start()
    {
        // Устанавливаем audio source'ы в нужные audio mixer группы
        backgroundMusicSource.outputAudioMixerGroup = backgroundMusicMixerGroup;
        soundEffectsSource.outputAudioMixerGroup = soundEffectsMixerGroup;

        // Пример воспроизведения фоновой музыки через backgroundMusicSource
        backgroundMusicSource.Play();

        // Пример воспроизведения звука эффекта через soundEffectsSource
        soundEffectsSource.PlayOneShot(soundEffectClip);
    }
}
```

В этом примере вы должны иметь две разные AudioMixerGroup для фоновой музыки и звуков эффектов, и два AudioSource – один для каждой категории звуков. Устанавливая outputAudioMixerGroup для каждого audio source'а, вы можете выбирать, в какую группу отправить звук.
Похожие вопросы