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);
        }
    }

 

 특정 상황에서 사운드가 너무 많이 재생되어 제어가 필요한 클립들을 해시에 할당한 후 해당 해시에 할당되어있는 클립이 재생될 때(메서드가 호출될 때) 현재시간 + 쿨다운 타임을 하여 계속해서 쿨타임을 늘려가는 식으로 메서드가 너무 빠르게 재생되지 않도록하였습니다.

+ Recent posts