public void PlaySound(GameAudioClip.GameClip _gameClip) { GameAudioClip _foundGameClip = GetAudioClip(_gameClip); if (CanPlaySound(_foundGameClip)) { GameObject _oneTimeClipGameObject = new GameObject("One-Time-Clip-Sound"); AudioSource _onTimeClipAudioSource = _oneTimeClipGameObject.AddComponent <AudioSource>(); _oneTimeClipGameObject.name = _foundGameClip.name; AudioClip _clip = _foundGameClip.audioClip; _onTimeClipAudioSource.volume = _foundGameClip.clipVolume; _onTimeClipAudioSource.clip = _clip; _onTimeClipAudioSource.Play(); Destroy(_oneTimeClipGameObject, _clip.length); } }
private bool CanPlaySound(GameAudioClip _gameClip) { switch (_gameClip.gameClip) { default: return(true); case GameAudioClip.GameClip.DYING_TIMER_BEEP: if (audioTimerDictionary.ContainsKey(_gameClip.gameClip)) { float _lastTimePlayed = audioTimerDictionary[_gameClip.gameClip]; float _timeBetweenPlays = GetAudioClip(_gameClip.gameClip).audioClip.length; if (_lastTimePlayed + _timeBetweenPlays < Time.time) { audioTimerDictionary[_gameClip.gameClip] = Time.time; return(true); } else { return(false); } } else { return(true); } case GameAudioClip.GameClip.MENU_BACKGROUND: if (audioTimerDictionary.ContainsKey(_gameClip.gameClip)) { float _lastTimePlayed = audioTimerDictionary[_gameClip.gameClip]; float _timeBetweenPlays = GetAudioClip(_gameClip.gameClip).audioClip.length; if (_lastTimePlayed <= 0 && !GameObject.Find(_gameClip.name)) { audioTimerDictionary[_gameClip.gameClip] = Time.time; return(true); } else if (_lastTimePlayed + _timeBetweenPlays < Time.time) { audioTimerDictionary[_gameClip.gameClip] = Time.time; return(true); } else { return(false); } } else { return(true); } case GameAudioClip.GameClip.LEVEL_BACKGROUND: if (audioTimerDictionary.ContainsKey(_gameClip.gameClip)) { float _lastTimePlayed = audioTimerDictionary[_gameClip.gameClip]; float _timeBetweenPlays = GetAudioClip(_gameClip.gameClip).audioClip.length; if (_lastTimePlayed <= 0 && !GameObject.Find(_gameClip.name)) { audioTimerDictionary[_gameClip.gameClip] = Time.time; return(true); } else if (_lastTimePlayed + _timeBetweenPlays < Time.time) { audioTimerDictionary[_gameClip.gameClip] = Time.time; return(true); } else { return(false); } } else { return(true); } } }