Unity 강의를 듣고 카드 뒤집기 게임을 완성하고, 추가 도전과제를 받아 게임을 고도화 하는 작업을 진행했다.
도전과제는
- 사운드 삽입하기
- 게임에 연출넣기
- 스테이지, 난이도 추가하기
이 세가지로 이번 포스팅에는 사운드 삽입하기에 대해 작성하겠다.
이번에 넣을 사운드는 타이머 시간이 촉박할때, 경고하는 음악 넣기와, 클릭할때, 카드를 성공적으로 찾았을때, 실패했을때로 특정 사운드가 나게끔 설정했다.
우선, 사운드를 찾기 위해 Unity Asset Store에서 무료에셋을 다운받았다.

내가 사용한것은 FREE Casual Game SFX pack으로 50개의 다양한 무료 효과음이 들어있었다.
에셋을 추가하고, 효과음을 들으면서, 잘 어울리는 것 같은음악을 따로 Asset -> Sounds폴더에 담아 두었다.

첫번째로, 클릭할때에 match라는 효과음이 나도록 해보았다. 카드를 클릭할때 실행되는 함수는 Card.OpenCard()

로 Card 프리팹에 연결되어있다. OpenCard()가 호출 될때에 효과음을 재생하려면. AudioSource와 AudioClip변수가 필요하므로 Card.cs에 생성해준다.

이렇게 생성한 변수를 OpenCard()에 넣어주면 되는데 사운드파일을 한번 재생하는 함수는 AudioSource의 PlayOneShot이라는 함수를 사용하면 된다. 다만 이렇게만 하면, 가져올 AudioClip과, AudioSource가 없으니, Card 프리팹의 Inspector창에가서 AudioSource를 추가하고, Card(Script)에 Open Clip변수에 Match효과음을 넣어준다.


이러면 클릭시 카드가 열리기 전, 소리가 재생이 될것이다.
다음은 실패, 성공에 따라, 다른 소리가 나오게끔 설정해보겠다. 실패, 성공을 판별하는 로직은 위 사진의 GameManager.Instance.isMatched()함수에서 판별하게 된다.
이제, 사운드를 만들때 필요한것은 이미 알고있으니, FailSound, SuccessSound, AudioSource 를 같은 방식으로 붙혀주고, 미리 사운드파일도 변수로 넣어주었다. 그 후,

성공 시점과, 실패 시점에 같은 방식으로 실행시키면 된다.
마지막으로, 시간에 따라 타이머소리를 출력하는것인데, 에셋에서 가져온 째깍째깍 소리가 1초밖에 재생이 안된다.
내 목표는 정해진 시간동안 계속 타이머 소리가 나게 만드는것을 하고싶기때문에, 해당 소리를 반복해서 출력하고자했다.
audioSource는 위에서 GameManager에서 이미 선언했기때문에, 게임종료까지 10초남았을경우부터 게임이 끝날때까지 반복 재생하도록 하겠다.
효과음을 반복재생하기 위해서는, audioSource의 loop값이 True인채로 Play를 해야하는데, update쪽에 play를 걸어버린다면, 매 프레임마다 사운드가 출력되어 째깍째깍소리가 겹쳐서 출력될것이다. 따라서 한번만 출력하기 위하여

isTimeSoundPlay라는 Bool값을 추가해주고 업데이트시에 isTimeSoundPlay가 False이고, 총 플레이타임값인 MaxTime-10이 진행시간 Time보다크거나 같다면 출력해주면된다.

이렇게 하면, 게임종료 10초전부터 째깍째깍 소리가 나오게 된다.
이제 게임이 종료되면 소리를 꺼줘야 하므로 EndGame시에 소리를 끄는 기능을 추가해준다.

이렇게 하면, 사운드가 정상적으로 출력되고 꺼지는것을 확인할 수 있다.
'Unity > Unity 개발' 카테고리의 다른 글
| Unity 카드 뒤집기 게임 고도화하기 (4) 해상도에 맞춘 카드 배치하기 (0) | 2025.04.11 |
|---|---|
| Unity 카드 뒤집기 게임 고도화하기 (3-2) 난이도 해금 시스템 만들기 (0) | 2025.04.11 |
| Unity 카드 뒤집기 게임 고도화 하기 (3-1) 스테이지 구성하기 (0) | 2025.04.11 |
| Unity 카드 뒤집기 게임 고도화 하기(2-2) 게임에 연출 더하기 (0) | 2025.04.10 |
| Unity 카드 뒤집기 게임 고도화 하기 (2-1) 게임에 연출 더하기 (0) | 2025.04.10 |