버튼을 눌렀을 때, 버튼음을 집어넣었다.
그런데, 버튼을 빠르게 누르면 누른 횟수대로 사운드가 재생된다.
어떻게 이 문제를 해결할까?
1. PlayOneShot()함수 앞에 Stop()함수를 먼저 실행한다.
--> 안 된다. 짧아서 그런지 몰라도 .
매우 간단하게 해결 할 수 있다.
바로,
isPlaying을 잘 사용하면 된다.
public AudioSource soundSource;
public AudioClip[] sound;
if (soundSource && sound[3])
if (soundSource.GetComponent<AudioSource>().isPlaying) return;
else soundSource.GetComponent<AudioSource>().PlayOneShot(sound[3]);
핵심은 isPlaying을 사용하는 것이다.
만약(if)현재 플레이 중이라면 return 즉, 아무것도 진행하지 말라는 의미이며,
그렇지 않다면(=플레이 중이 아니라면else) PlayOneShot을 사용하여 1회 플레이하라는 의미이다.
이렇게하면 버튼을 미친듯이 눌러도 이벤트는 발생하지만 isPlaying에 막혀 사운드는 출력되지 않는다.
이상으로 버튼 사운드 중복될 때 해결 방법을 알아봤다.
'개발 > Unity & C#' 카테고리의 다른 글
[유니티] 스크립트에서 머터리얼(Material) 한 개 또는 여러개 호출하는 방법... (0) | 2018.04.19 |
---|---|
[유니티] Animator를 이용하여 Animation Play할 때 한 번만 실행되는 경우 해결 방법! (2) | 2018.04.17 |
[유니티] NGUI UIButton 비활성화할 때 색상 제거하는 방법! (0) | 2018.04.16 |
[유니티] 유니티에서 Inspector 창 닫히지 않게 잠그기! (0) | 2018.04.16 |
[유니티] 배열대신 LIst사용하는 이유와 방법 (0) | 2018.04.13 |