示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }