오늘은 간단하게 사운드 추가 및 로직 정리를 하고 개발 프로젝트를 마무리하였다.
배경음악, Enemy Hit, Enemy Dead, 승리 및 패배 등 다양한 부분에서 효과음을 추가하였다.

이 때, Audio 관련 로직을 처리하는 AudioManager Object를 만들어서 사용했다.
AudioManager의 자식으로 배경음악을 관리하는 bgmPlayer와 효과음을 관리하는 sfxPlayer를 추가하여 관리했다.


배경음악을 담당하는 bgmPlayer는 배경음악 하나만 무한으로 재생시키고 있기 때문에 초기화는 간단했다.
문제는 효과음을 재생해주는 sfxPlayer였는데, 게임 플레이 도중 효과음이 겹쳐서 한 번에 여러 개가 들려야하는 상황이 발생할 수 있으므로 AudioSource를 여러 개 선언해야했다.
하지만 처음부터 수를 고정시켜서 여러 개 선언하는 것이 아니라 List를 사용하여 AudioSource가 필요한만큼 동적으로 생성하는 방법으로 구현했다.


(조건문은 Hit과 Melee의 효과음이 2개라 랜덤한 Clip을 선택하게하는 코드인데 로직과는 관련없어서 무시해도 된다)
먼저, 효과음이 필요한 상황에서 AudioManager를 통해 함수를 호출하면 현재 음악을 재생 중이지 않은 AudioSource 하나를 선택하여 해당 AudioSource의 Clip을 변경한 후 Play를 해주었다.
만약, 쉬고 있는 AudioSource가 하나도 없다면 새로 만들어서 List에 추가해준다.

위 방법을 사용하면 AudioSource를 필요한만큼만 생성 및 사용하므로 자원을 효율적으로 관리할 수 있다.
이렇게 작성한 함수를 효과음이 필요한 부분에서 호출하면 된다.

예를 들어, 위 사진은 처음 게임 시작할 때 직업을 선택하는 과정에서 Select라는 효과음을 호출하는 코드이다.
추가로, 게임 진행 도중 LevelUp 시 능력을 선택하는 부분에서 배경음악에 HighPassFilter를 적용하여 Player가 게임 진행 도중이 아닌 무언가 처리 중에 있다는 느낌이 들도록 했다.
영상 용량이 커서 유튜브에 업로드하였다.
이번 프로젝트는 지금까지 했던 모든 프로젝트 중에 스케일이 제일 큰 프로젝트였다.
그만큼 시간도 오래걸렸지만 새로운 Input Package, 로직 구현 등 많은 지식과 테크닉을 배워가는 프로젝트였다.
영상을 참고하여 개발하면서 내 방식으로 작성한 코드와 골드메탈님이 작성하신 코드를 비교했고, 코드를 어떻게 작성해야 자원을 효율적으로 사용하고 확장성이 좋을지 계속 고민하였다.
이런한 과정에서 프로젝트를 시작하기 전보다는 조금이나마 더 성장했다는 느낌이 든다.
이런 양질의 교육 영상을 무료로 업로드해주신 골드메탈님께 정말 감사하는 마음이다.
https://github.com/dlalsrn/Undead-Survivor