본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그69번째 걸음-배경음악을 넣는 작업

by 인터넷떠돌이 2018. 8. 19.
반응형

안녕하세요?


어제 포스팅을 못 올리 정도로 많이 머리를 쥐어 짜다가 이제서야 겨우 배경음악이 나오게 하는 조작에 성공해서, 그 내용을 올리고자 합니다. 원래는 효과음도 같이 넣어야 했는데, 거기까지 하기에는 분량이 너무 많아서 하는 수 없이 배경음악만 나오게 하는 것으로 이번 포스팅을 진행하고자 합니다.



먼저 효과음을 모은다고 해서 FreeSoundClipBites라는 곳을 찾아가 보았습니다.



여기서 여러개의 효과음 사운드를 모으는 데는 성공했습니다.



그 다음에는 크레딧에 이름을 올려주는 것을 조건으로 해서 배경음악을 제공해 주는 곳이 있는데, 거기를 찾아가서 라이센스에 대해서 한번 살펴 보았습니다.



BenSound라는 곳에서 먼저 SloMotion이라는 사운드를 받도록 합니다. 그런데 여기까지만 했어도 이건 별로 중요하지 않다는 것을 몰랐습니다. 아무튼 일단 가져 가도록 합니다.



다음 사운드를 가지고 가도록 합니다.



마지막으로 게임오버에 사용될 사운드를 가지고 갑니다.



일단 유니티5로 가서, AudioSource라는 것이 있다는 것을 보도록 합니다.




먼저 설명서를 보도록 합니다. 특별한 것으 없다는 생각이 듭니다.



그리고 다음으로는 Sounds라는 폴더를 프로젝트 뷰에서 만들어 주도록 합니다.



그리고 다운로드 받은 사운드 파일들을 가지고 오도록 합니다.



먼저 InGameCanvas를 선택하도록 합니다.



여기다가 AudioSource라는 컴포넌트를 추가 하도록 하고, 그 다음에는 Play On Awake와 Loop를 선택하도록 합니다.



다음으로는 MenuCanvas를 찾아 가도록 합니다.




일단 여기서는 Loop를 빼놓기는 했지만, 그대로 다른 사운드를 지정 하도록 합니다.



다음으로는 GameOverCanvas를 찾아 가도록 합니다.



여기서도 오디어 소스를 지정해 주도록 합니다.



다른건 좋은데 모든 사운드가 한꺼번에 재생이 되는 문제가 발생했습니다. 이 문제를 해결해야 하는데, 여기서 이게 얼마나 머리아픈 일이 되는지 저는 몰랐습니다. 아무튼 그것도 모르고 일단 시작을 하기는 합니다.



이래저래 방법이 없기는 없어서 하는 수 없이 SoundControl이라는 C# 스크립트를 만들어 주도록 합니다.



먼저 SoundControl.cs를 인스턴스화 시키고, 그 다음에는 위와 같이 게임 오브젝트(gameobject)변수를 선언하고, 다음으로는 int형식의 변수를 일종의 스위치 형식으로 지정 하도록 합니다.



그리고 나서 SoundController()라는 메소드를 만들어 보도록 합니다. 여기서 AudioSource 변수명 = 게임오브젝트.GetComponent<AudioSource>(); 라는 구문을 통해서 각각의 지정된 게임 오브젝트에서 사운드 소스를 가지고 오도록 합니다. 그리고 나서 상태를 나타내는 변수인 SoundState라는 변수의 값에 따라서 true냐 false를 지정하도록 합니다.




그리고 나서 이번에는 GameManager.cs를 찾아 가도록 합니다.



기존에 있는 메소드인 SetGameState라는 메소드에서 위와 같은 구문들을 추가해 주도록 합니다.



그리고 유니티5로 돌아와서 이번에는 GameManager 게임 오브젝트를 선택하도록 합니다.



그리고 나서 SoundControl스크립트를 인스펙트 뷰에서 추가 하도록 합니다.



다음으로는 스크립트상에서 도저히 지정이 되지 않던 게임 오브젝트를 여기서 수동으로 끌어와서 지정을 해 주도록 합니다.



그리고 시작하자 마자 사운드 소스가 얽히는 문제가 있기에, Start에서 위와 같은 메소드를 지정해 주도록 합니다.



드디어 배경음악이 살아 있는 채로 완성한 결과물입니다. 일단 이것으로 어떻게 완성을 하는 데는 성공하기는 했는데, 문제는 메인메뉴로 빠졌다가 다시 게임을 시작할 때는 발판이 생성안되는 문제가 발생하였습니다. 이 문제는 지금 당장 해결하기에는 분량이 많아서 일단 시간이 걸릴 것 같고, 효과음도 추가해야 한다는 생각이 듭니다. 이 과제들을 해결한 다음에 포스팅을 다시 올리도록 해 보겠습니다.

반응형