Programming/Unity

[유니티 Unity] 사운드 재생하기

통통만두 2018. 9. 5. 16:39
반응형

Hierarchy 에서 마우스 오른쪽 버튼을 눌러서 Create Empty 를 하나 만들어줍니다.



새로 생성된 Object 를 선택하고 인스펙터 Inspector 로 가서 이름을 SoundManager 로 변경해줍니다.



SoundManager.cs 파일을 생성합니다.


public AudioSource audioSource;
public AudioClip audioClipKnock;
public AudioClip audioClipApplause;

...

public static SoundManager instance;

저의 경우에는 유니티 Unity 툴에서 마우스로 바로 Object 를 끌어다 쓸 작정으로 public 로 AudioSource 한 개와 AudioClip 두 개를 선언했습니다. 그리고 나서 외부에서 지금 만드는 SoundManager 에 접근할 수 있도록 선언해줍니다.

void Awake()
{
    if(SoundManager.instance == null)
    {
        SoundManager.instance = this;
    }
}

Awake() 함수는 Start() 함수보다 먼저 호출이 됩니다. 저 소스를 왜 넣는지는 싱글톤 패턴 Singleton Pattern 을 참조하세요.


public void PlayKnockSound()
{
        audioSource.PlayOneShot(audioClipKnock);
}

public void PlayApplauseSound()
{
    audioSource.PlayOneShot(audioClipApplause);
}

여기까지 하면 외부(다른 소스)에서 해당 SoundManager 을 사용할 준비가 완료한 채로 유니티 Unity 설정으로 넘어가겠습니다.

아까 만든 SoundManager 에 AudioSource 를 두 개 추가해서 하나는 Audio Source, 하나는 audioSourceIntro 으로 했습니다. 이 중 audioSourceIntro 는 앱이 켜질 때 intro 사운드 효과를 내기 위해서 사용했고 Audio Source 는 각각 상황에 맞는 사운드를 재생하기 위해서 사용합니다.


이제 SoundManager 인스펙터에서 Add Component 버튼을 눌러서 지금 만든 SoundManager.cs 파일을 연결하겠습니다.



그러면 아래와 같이 보일텐데요



Hierarchy 에서 만든 Audio Source 를 끌어다 놓아주시고 Audio Clip knock, Audio Clip Applause 는 우측의 동그라미를 눌러서 원하는 사운드파일을 선택해줍니다.



여기까지 마치셨으면 이제 사운드 재생을 할 준비가 모두 완료되었습니다!


사운드를 재생하고자 하는 곳에서 아까 만든 SoundManager.cs 파일내의 함수를 호출하기만 하면 됩니다.


SoundManager.instance.PlayKnockSound();
SoundManager.instance.PlayApplauseSound();
Audio Source 의 인스펙터에서 AudioClip 를 눌러서 사운드파일을 선택해서 재생할 수도 있습니다.

SoundManager.instance.audioSource.Play();

버튼 클릭을 했을 때 사운드 재생을 하도록 해놨다고 하면, 버튼을 클릭할 때마다 이전의 사운드재생은 멈추고 새로이 재생이 됩니다. 즉, 누를때마다 끊어지는 현상이 납니다. 하지만 Audio Clip 를 사용해서 PlayOneShot 함수를 이용하면 그런 현상 없이 누를때마다 계속 끝까지 재생이 됩니다.


사운드라 보여드릴 수 없으니 직접 이것저것 테스트 해보시면서 익혀가시기 바랍니다.





반응형