카드 매칭 게임 추가 구현에서 내가 맡았던 부분은 게임에 진입할 때, 카드끼리 매치 성공했을 때, 실패했을 때의 효과음 부여였다.
배경음이나 매치 성공 효과음은 이전에 강의를 보고 구현했어서 실패효과음은 생각할 부분도 없었다.
조금 더 나아가서 오디오 매니저의 '관리자 다운' 역할을 더 부여하기 위해서 유니티의 오디오 매니저 구현에 대해서 찾아보았다.
깔끔하고 팀원들과 공유하고싶은 마음이 들게하는 방법을 찾아서 그 방법대로 구현했다.
많은 사람들이 각자만의 방법으로 오디오 매니저를 구현해놓았지만, 그 중에 제일 깔끔해보였던 방법을 택했다.
참고한 영상 링크 : https://youtu.be/KJfzT1VfOaM?si=LAJyRg1kxFx3vOQ2
코드가 너무 깔끔하고 좋아서 복붙 수준으로 갖다 썼으니 구조의 이해와 응용에 더 힘을 썼다.
기능을 추가한 오디오 매니저 코드
public class AudioManager : MonoBehaviour
{
public static AudioManager Audio;
public AudioSource audioSource;
public AudioClip bgm;
private void Awake()
{
Audio = this;
}
void Start()
{
audioSource.clip = bgm;
audioSource.Play();
}
public void SFXPlay(string sfxName, AudioClip clip)
{
GameObject newObj = new GameObject(sfxName+"_Sound");
AudioSource audioSource = newObj.AddComponent<AudioSource>();
audioSource.clip = clip;
audioSource.Play();
Destroy(newObj, clip.length);
}
}
효과음을 한 번 재생해주는 SFXPlay
함수를 추가했다.
매니저에 추가한 함수 내용
첫 번째 매개변수는 새로 생성된 오브젝트를 구분하기 위한 인식표이다.
두 번째 매개변수는 AudioClip으로 재생시키고자 하는 AudioClip을 받아온다.
1. 오디오 매니저가 새로운 오브젝트를 만듦
2. 오브젝트에 오디오 리소스를 붙여줌
3. 매개변수로 오디오 클립을 받음
4. 클립을 재생하고 클립의 재생을 마치면 오브젝트를 소멸시킴
오디오 매니저를 싱글톤으로 만들어주고 아래 코드처럼 문자열과 오디오 클립을 넘겨주어 사용할 수 있다.
AudioManager.Audio.SFXPlay("match", match);
다른 스크립트에 중구난방으로 있던 AudioSource를 없애자!