
오늘 게임 개발을 하다가, 씬을 변경할 때 들려야 하는 효과음이 들리지 않는 문제점을 발견하였다.
public void Retry(int index)
{
AudioManager.instance.PlaySfx(AudioManager.Sfx.ButtonClick);
SceneManager.LoadScene(index);
}
위는 Retry 버튼을 통해서 씬을 다시 로드하는 함수이다. 버튼을 통해 이루어지기 때문에 여기에 효과음을 부여하였다. 그런데, 다른 곳에서는 잘 났던 효과음이 이 부분에서만 나지 않았다. 즉, 씬을 로드하면서 소리가 끝까지 재생되기 전에 AudioManager 스크립트를 담은 오디오 매니저 오브젝트가 사라지게 되는 것이다.
이를 해결하기 위해서, 간단하게 구성하였던 AudioManager 스크립트의 싱글톤을 다음과 같이 수정하게 되었다.
수정 전
private void Awake() { if (instance == null) { instance = this; } Init(); }
수정 후
private void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); Init(); } else { Destroy(gameObject); // 중복 방지 } }
이와 같이 수정하면 AudioManager 오브젝트는 씬이 변경되도 파괴되지 않고 하나로 계속 유지된다. 따라서, 효과음이 제대로 출력되는 것을 확인할 수 있다.