public void PlayClip(AudioClip clip, Vector3 position, float duration, bool loop = false) { ObjectPooler.Instance.Instantiate(AudioObjectName, position, out var go); var source = go.GetComponent <AudioSource>(); source.clip = clip; source.loop = loop; source.Play(); if (!loop) { UnityRuntime.Invoke(() => { go?.SetActive(false); }, duration); } }
public void PlayRandomClip(IList <AudioClip> clips, float duration) { ObjectPooler.Instance.Instantiate(AudioObjectName, Camera.main.transform.position, out var go); var source = go.GetComponent <AudioSource>(); var clip = clips.RandomObject(); while (clip == _lastPlayedClip) { clip = clips.RandomObject(); } _lastPlayedClip = clip; source.clip = clip; source.loop = false; source.Play(); UnityRuntime.Invoke(() => { go?.SetActive(false); }, duration); }
public void PlayClipDelayed(AudioClip clip, float delay) { UnityRuntime.Invoke(() => PlayClip(clip), delay); }