목차
이번 프로젝트에선 단순하게 클립을 불러오는 것이 아닌 오디오 믹서를 이용하여 구성하고자 한다. 작업에 앞서서 현재 사용하고 있는 프레임워크의 사운드 매니저를 확인했다. 프레임워크에서 사용되는 사운드의 경우 음악 수가 많은 우리의 프로젝트에 사용이 어려울 것 같아 다른 구현 방법을 찾아보았다. 그러던 중 팀원이 전에 사용했던 코드를 재사용 해보면 좋을 것 같다고 하였고 이 코드를 프로젝트에 적용 시켜보았다.
Clips Enum
브금과 효과음으로 사용할 음악은 enum을 이용하여 관리한다. 그리고 각 BGM 오브젝트 컴포넌트와 SFX 오브젝트 컴포넌트의 clips에 음악을 넣어두었다.
SingleTon<T> 수정
이전 스크립트는 제네릭 싱글톤을 이용하여 인스턴스화를 시켰지만 현재 우리 프로젝트와 맞지 않은 방식이었다. 우리의 경우 컴포넌트에 필요한 값들을 하이라키 창에 직접 넣지 않고 있어서 일단 monobehavior를 제외하고 기본 스크립트로 만들었다.
그리고 Managers 스크립트에서 soundmanager를 불러와서 초기화(Init)했다.
Audio Mixer
오디오 믹서는 프로젝트에서 우클릭을 통해 만들 수 있다.
생성하게 되면 씬창이나 게임창에 오디오 믹스 설정을 만질 수 있는 패널이 생성된다. 가장 기본적으로 Master 믹서만 생성되어 있다.
게임 음향에는 BGM과 SFX가 있으므로 각각 조절이 가능한 믹서를 생성해야 한다. 생성 방법은 Groups옵션 오른쪽 + 버튼을 눌러 Master 하위에 믹서를 생성한다. 아래와 같이 생성하면 BGM과 SFX가 Master로 조절 가능해진다.
이 상태가 되면 이게 게임 내의 소리를 오디오 믹서에서 확인할 수 있다. 하지만 우리는 여기서 멈추지 않고 스크립트에서 조절 가능하게 해야한다. 그러기 위해선 일단 각 믹서를 눌러서 나타나는 인스펙터 창에서 설정을 바꿔주어야 한다. Attenuation -> volume을 우클릭하면 Expose 'volume(of Master)' to script로 변경한다. 그러면 파라미터를 지정해서 스크립트에서 사용 가능하다. 파라미터가 임시로 되어 있기 때문에 이것도 바꾸어 주어야 한다.
(임의의 파라미터 이름은 우클릭을 통해 Rename할 수 있다.)
볼륨 저장
오디오는 구현하는 것은 쉽지만 생각해야 할 것이 많은 것 같다. 슬라이더를 통해 오디오 믹서의 볼륨값을 조절할 수 있게 되어도 설정이 남아있어야 한다. 남아있게 하려면 저장을 해야한다. 저장할 수 있는 방법은 많다. float 변수로 값을 저장할 수도 있고 데이터 매니저를 통해 플레이어 정보와 함께 저장할 수 있고 간단하게 playerPref으로 저장할 수 있다. 우리의 경우 아직 데이터를 따로 저장하지 않고 있기 때문에 일단 playerpref으로 저장하기로 했다. 아마 이후에 플레이어 데이터로 넘길 것 같다.
마무리하며
>남의 스크립트 + 남의 스크립트 = 프로젝트 스크립트< 를 만드느라 생각보다 시간이 많이 걸렸지만 어쨌든 볼륨 조절과 저장하는 것까지 가능해졌다. 마스터 볼륨 슬라이드를 bgm과 sfx 슬라이드와 동기화 하고 싶지만 이건 조금 더 고민해봐야 할 것 같다.
'Unity > TIL' 카테고리의 다른 글
[최종 프로젝트] 개발 1주차 트러블 슈팅 (0) | 2024.07.15 |
---|---|
[최종 프로젝트] 게임 기획 (0) | 2024.07.11 |
Unity Extension Method / 확장 메서드 (0) | 2024.07.05 |
Unity 바인딩 (0) | 2024.07.02 |
[면접대비] 객체와 한정자 (0) | 2024.07.01 |