private float nextSFXTime = 0f;
[SerializeField]
private float sfxCoolTime = 0.5f;
private HashSet<eSFXMusicPlayList> cooldownSounds = new HashSet<eSFXMusicPlayList>
{
eSFXMusicPlayList.Monster_Dead,
eSFXMusicPlayList.GunShot_Start_SubmachineGun,
eSFXMusicPlayList.GunShot_1_SubmachineGun,
eSFXMusicPlayList.GunShot_2_SubmachineGun,
eSFXMusicPlayList.GunShot_3_SubmachineGun,
eSFXMusicPlayList.GunShot_4_SubmachineGun,
eSFXMusicPlayList.GunShot_5_SubmachineGun
};
public void PlaySFXOneShot(eSFXMusicPlayList SFXSoundTitle, AudioSource source)
{
var audioClip = this.BGAudioClipList.Find(x => x.name == SFXSoundTitle.ToString());
if (this.cooldownSounds.Contains(SFXSoundTitle))
{
if (Time.time >= this.nextSFXTime)
{
SoundManagerExtensions.PlayOneShotSoundManaged(source, audioClip);
this.nextSFXTime = Time.time + this.sfxCoolTime;
}
}
else
{
SoundManagerExtensions.PlayOneShotSoundManaged(source, audioClip);
}
}
특정 상황에서 사운드가 너무 많이 재생되어 제어가 필요한 클립들을 해시에 할당한 후 해당 해시에 할당되어있는 클립이 재생될 때(메서드가 호출될 때) 현재시간 + 쿨다운 타임을 하여 계속해서 쿨타임을 늘려가는 식으로 메서드가 너무 빠르게 재생되지 않도록하였습니다.
'Unity2D' 카테고리의 다른 글
Unity) [UGUI] 도움말 UI 제작 (0) | 2023.06.06 |
---|---|
Unity) [유니티 2D] 포스트 프로세싱 적용 (0) | 2023.05.31 |
Unity) [유니티 2D] 에디터를 활용하여 스프라이트의 Pivot값 변경하기 (0) | 2023.05.19 |
Unity) [UGUI] 버튼을 누르고 있으면 연속으로 값이 상승하는 버튼 구현 (0) | 2023.05.17 |
Unity) [유니티 2D] Glow 효과 (0) | 2023.05.17 |