게임 개발 과정에서 수시로 추가되고 수정이 빈번한 사운드 resource 같은 경우 처음부터 다수의 자원을 효과적으로 다룰 관리방법이 중요하다.
모바일 포트폴리오 정도를 다루는 간소한 프로젝트에서는 리소스가 많아봐야 100개를 넘을리 없지만 실제 대규모 프로젝트에서는 그보다 훨씬
많은 분량을 고려해야하기 때문에 사운드 리소스를 식별하는 해시맵을 작성해야 할 것이다.
지금 프로젝트에서는 그와 유사한 개념으로 유니티 친화적인 scriptableObject를 사용하여 사운드 타입을 BGM과 UI, SFX 별로 구별하였습니다.
확장메서드로 enumType을 인덱스화하면 오디오메니저에서 식별할 수 있는 타입을 인자로 받아 사운드를 재생하고 관리되도록 설계하였습니다.
오디오매니저에는 Volume Fade In/Out을 구현하여 씬 시작시 필요한 부분에서 부드러운 사운드 전환을 연출할 수 있도록 하였고,
게임 pause Canvas를 열 때 Backgroud music 에 대해서만 중지 속성값을 주어 보다 자연스러운 UI 반응을 구성하도록 하였습니다.
Sound.source
toggle code
SoundSource - ScriptableObject
toggle code - BGM / SFX / UI
toggle code - None 예외 처리 사용 이유
Sound.AuidoManager
toggle code
AudioManger - 사운드 관리 매니저 클래스 (사운드 타입 접근 인덱스화, 볼륨 Fade in /out 구현)
musicSource(BGM)와 soundSource(SFX , UI) 구분 - SoundSource pause Ignore // pause canvas 활성화 시 BGM만 pause
'MyProjects > PuzzleGame' 카테고리의 다른 글
# 프로젝트 리소스 출처와 라이센스 (1) | 2018.08.07 |
---|---|
8. 파이어베이스 플러그인 - 로그인과 데이터베이스 (0) | 2018.08.04 |
6. 관리매니저 - UI Canvas 와 Scene 관리 (0) | 2018.08.04 |
5. 동작 메커니즘 - 스테이지 설계와 게임 플레이 (0) | 2018.08.02 |
4. 동작 메커니즘 - SpawnObjectPool과 Mecanim (0) | 2018.08.02 |