Unity 개발일지

[Unity] SoundManager로 간단하게 BGM과 효과음 넣기! - 1 - 본문

Unity 개발

[Unity] SoundManager로 간단하게 BGM과 효과음 넣기! - 1 -

아머르 2024. 6. 10. 21:10

오늘은 SoundManager로 간단하게 음악을 재생할 수 있는 스크립트를 작성해보자.

 

[계획]

스크립트마다 Sound 관련 변수들을 선언하고 Audio Clip을 등록할 필요 없이 Manager 오브젝트를 만들어 관리한다.

 

How?

 

1. BGM과 효과음은 동시에 소리가 날 수 있다. 그러므로 SoundManager는 2개의 AudioSource를 등록해주고

 각각 BGM과 효과음을 담당한다.

2. 생각보다 노래소리와 효과음은 시끄럽다. Slider UI를 만들고, 이를 조정하여 테스트 중에도 소중한 귀를 지켜주자.

3. 모든 스크립트들이 SoundManager에 쉽게 접근할 수 있는 방법은? Singleton 패턴!

 

[구현]

<SoundManager 스크립트>

 

우선 빈 오브젝트 SoundManager를 만든 후 AudioSource 2개와 SoundManager 스크립트를 등록

 

 

 

 

 

 

 

 

 

 

이제 Script를 작성해보자.

우선 static으로 SoundManager를 정의하고,

접근은 마음대로, 수정은 불가능하게 프로퍼티 설정!

 

AudioSource 2개를 정의한다.

 

BGM과 SFX 들을 등록해준다.

 

Slider 사용을 위해 Slider를 정의해준다.

 

float? : Nullable 변수로 null을 포함할 수 있는 자료형

Scene전환이 되면 Slider UI가 없어져서 값 저장을 위한 변수이다. Slider를 수정하지 않으면 null일 수 있어 nullable로 선언

(TMI: MainScene에서 바로 Test를 진행할 때 사용하기위해 만들었지만 bgmSource.volume으로 초기화를 할 수 있었다.)

 

 

Awake에서 싱글톤을 정의하는 절차를밟아보도록하자.

 

 

 

 

 

 

Start문에서 MainBGM을 켜준다.

 

PlayInitialBGM은 AudioClip을 반복재생해주는데

 

bgmSliderValue가 null이면 그냥 재생해주고

Slider설정을 바꿨으면 바꾼 설정값으로 재생해준다.

 

일종의 방어기제로 넣어둔 셈!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

다른 스크립트에서 손쉽게 BGM과 SFX를 사용할 수 있도록 해주는

Play 함수이다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Slider에서  BGM, SFX를 조절하기위한 함수이다.

 

 

 

 

 

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Slider는 Button을 등록하듯이 등록해주고,

Direction에서 Left To Right 등

원하는 방향으로만 설정해주면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

< SoundManager에 음원파일과 Slider를 등록하는 것을 잊지 말자! >

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[SFX 재생]

Start Scene에서 NewGame 버튼과 LoadGame 버튼을 눌렀을 때 효과음이 재생되도록 설정했는데

간단하게 SoundManager.Instance.PlaySFX(SoundManager.Instance.successEffect); 로 접근할 수 있다.

 

작성하다보니 내용이 너무 길어져 플레이어가 Trigger 충돌을 일으키면 MusicZone의 노래가 활성화되는 부분에 대해서는 내일 마저 작성하도록 하겠다.

반응형