private void Play(AudioClipVolume a) { var now = Time.timeSinceLevelLoad; if (_lastPlayed.TryGetValue(a.clip.name, out var lastPlayed) && now - lastPlayed < repeatCooldown) { return; } _lastPlayed[a.clip.name] = now; sfx.Play(a); }
public void PlayOnce(string name, float volumeScale) { if (clips.ContainsKey(name)) { AudioClipVolume clip = clips[name]; var source = gameObject.AddComponent <AudioSource>(); source.volume = clip.volume * volumeScale; source.clip = clip.clip; source.loop = false; oneShotSources.Add(source); source.Play(); } else { throw new AudioClipNotFoundException(name); } }
public void PlayLoop(string name, float FadeTime) { if (clips.ContainsKey(name)) { if (!loopSources.ContainsKey(name)) { AudioClipVolume clip = clips[name]; var source = gameObject.AddComponent <AudioSource>(); source.clip = clip.clip; source.loop = true; loopSources[name] = source; source.Play(); StartCoroutine(FadeIn(source, clip.volume, FadeTime)); } } else { throw new AudioClipNotFoundException(name); } }
public void Play(AudioClipVolume c) => Play(c.clip, c.volume);