내일배움캠프 47일차 TIL - Volume Mixer

권태하·2024년 6월 24일
0
post-thumbnail

트러블슈팅

이번에 봉착한 트러블은 사운드에 관한 것이다. 나는 이번에 처음으로 제대로 사운드 관련된 구현을 맡아서 해보고있는데, 모르는 내용이 많아서 고생을 많이 하고있다.

현재 만들고 있는 팀프로젝트 게임은 씬을 여러개 쓰고 있다.

볼륨을 조절하는게 강의를 보고 배운것은 Audio Source의 볼륨을 직접 조절하는 것이었는데 해당 볼륨을 조절하는 슬라이더 오브젝트가 씬이 넘어가면 사라지는 것 때문에 어떻게 해결해야하나 고민이 있었다.

고민1

그래서 처음에 떠올렸떤 방법은 슬라이더 UI를 모든 씬에서 쓰일 것을 미리 처음에 만들어두고 Active를 통해 키고 끄는 방법이었다.
하지만 이 방법은 불필요한 UI들이 모든 씬에 존재하게 되고 관리가 어려울 것이라는 생각이 들어서 어떻게 해야하나 고민하고있었는데...

해결

팀원 한분이 몰륨 믹서를 사용해보라는 조언을 해주셨다.

볼륨 믹서란
유니티에서의 볼륨 믹서(Audio Mixer)는 오디오 소스의 볼륨을 세밀하게 조절하고 관리할 수 있는 강력한 도구입니다. 이를 통해 개발자는 게임 내에서 다양한 오디오 소스(예: 배경음악, 효과음, 대화 등)의 볼륨을 개별적으로 또는 그룹으로 조절할 수 있으며, 오디오 신호의 라우팅, 이펙트 적용, 오디오 덕킹(한 오디오 소스가 재생될 때 다른 소스의 볼륨을 자동으로 낮추는 기능) 등 고급 오디오 처리 기능을 사용할 수 있습니다.
주요 기능
• 오디오 그룹: 볼륨 믹서를 사용하면 오디오 소스를 그룹으로 묶어 각 그룹의 볼륨을 독립적으로 조절할 수 있습니다. 예를 들어, 배경음악, 효과음, 대화 등을 별도의 그룹으로 관리할 수 있습니다.
• 오디오 이펙트: 볼륨 믹서는 리버브(Reverb), 에코(Echo), 콤프레서(Compressor) 등 다양한 오디오 이펙트를 제공합니다. 이를 통해 오디오에 깊이와 다양성을 추가할 수 있습니다.
• 오디오 덕킹: 오디오 덕킹 기능을 사용하면 특정 오디오 소스가 재생될 때 다른 오디오 소스의 볼륨을 자동으로 낮출 수 있습니다. 예를 들어, 게임 내에서 중요한 대화가 시작되면 배경음악의 볼륨을 자동으로 낮추는 것이 가능합니다.
• 오디오 스냅샷: 볼륨 믹서는 오디오 설정의 스냅샷을 저장하고, 게임 상황에 따라 이러한 스냅샷을 빠르게 전환할 수 있는 기능을 제공합니다. 이를 통해 게임의 다양한 장면에서 적절한 오디오 설정을 쉽게 적용할 수 있습니다.
사용 방법
1. 볼륨 믹서 생성: 유니티 에디터에서 Assets 메뉴의 Create > Audio Mixer를 선택하여 새 볼륨 믹서를 생성합니다.
2. 오디오 그룹 설정: 볼륨 믹서 에디터에서 오디오 그룹을 추가하고, 각 그룹에 오디오 소스를 할당합니다.
3. 오디오 이펙트 적용: 각 오디오 그룹에 원하는 오디오 이펙트를 추가하고 설정합니다.
4. 오디오 소스 연결: 게임 오브젝트의 AudioSource 컴포넌트에서 Output 속성을 사용하여 해당 오디오 소스를 볼륨 믹서의 오디오 그룹에 연결합니다.
5. 스크립트를 통한 제어: AudioMixer 클래스를 사용하여 스크립트에서 볼륨 믹서의 파라미터를 동적으로 조절할 수 있습니다.
유니티의 볼륨 믹서를 사용하면 게임의 오디오 품질을 크게 향상시키고, 사용자에게 더 몰입감 있는 오디오 경험을 제공할 수 있습니다.

다양한 기능이 있는 볼륨 믹서이지만 나는 이것을 사운드 크기 조절에만 써먹었다.

마스터 볼륨에 그룹으로 BGM과 SFX를 만들어주고 파라미터 조절을 콜 될 이름으로 변경해준다.

그리고 Expose 'Volume' to script를 선택해준다.

마지막으로 스크립팅

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;

public class VolumeSetting : MonoBehaviour
{
    [SerializeField] private AudioMixer _audioMixer;
    [SerializeField] public Slider MasterVol;
    [SerializeField] public Slider BgmVol;
    [SerializeField] public Slider SFXVol;

    private void Start()
    {
        MasterVol.onValueChanged.AddListener(SetMasterVolume);
        BgmVol.onValueChanged.AddListener(SetBgmVolume);
        SFXVol.onValueChanged.AddListener(SetSFXVolume);
    }

    public void SetMasterVolume(float volume)
    {
        _audioMixer.SetFloat("Master", volume);
    }

    public void SetBgmVolume(float volume)
    {
        _audioMixer.SetFloat("BGM", volume);
    }

    public void SetSFXVolume(float volume)
    {
        _audioMixer.SetFloat("SFX", volume);
    }


그리고 위와 같이 슬라이더를 각각 대응해주면 세팅이 끝난다.
이를통해 볼륨믹서가 슬라이더를 통해 조절되고 이 값은 씬이 넘어가도 저장되기에 다음 씬에서는 다시 볼륨믹서를 슬라이더로 조절되도록 연결해주면 된다.

profile
스터디 로그

0개의 댓글

관련 채용 정보