private void PlayAndDie(AudioClip clip, AudioBus bus) { var playerInstance = new GameObject($"[{bus}]TemporaryAudioSource").AddComponent <AudioSource>(); bus.ApplyBus(playerInstance); playerInstance.PlayOneShot(clip); Destroy(playerInstance.gameObject, clip.length); }
private AudioSource PlayLoopingFromPool(AudioClip clip, AudioBus bus = null) { var audioSource = audioPool[bus.Name].Dequeue(); audioSource.gameObject.SetActive(true); bus.ApplyBus(audioSource); audioSource.loop = true; audioSource.clip = clip; audioSource.Play(); return(audioSource); }
private IEnumerator PlayFromPool(AudioClip clip, AudioBus bus = null) { if (audioPool[bus.Name].Count == 0) { PoolSources(); } var audioSource = audioPool[bus.Name].Dequeue(); audioSource.gameObject.SetActive(true); bus.ApplyBus(audioSource); audioSource.PlayOneShot(clip); yield return(new WaitForSeconds(clip.length)); audioPool[bus.Name].Enqueue(audioSource); audioSource.gameObject.SetActive(false); }