using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(AudioSource))] [RequireComponent(typeof(AudioClipRandomizer))] [RequireComponent(typeof(PitchRandomizer))] public class EnhancedAudioSource : MonoBehaviour { [Header("Use this config instead of default audiosource")] [Header("Config:")] [SerializeField] private bool randomizePitch; [SerializeField] private bool randomizeClip; [Tooltip("This will always override playOnAwake")] [SerializeField] private bool playOnSpawn; [SerializeField] private bool loop; [SerializeField] private bool loopButRandom; AudioSource source; AudioClipRandomizer clipRandomizer; PitchRandomizer pitchRandomizer; float loopingButRandomLength; private void Awake() { source = GetComponent(); clipRandomizer = GetComponent(); pitchRandomizer = GetComponent(); source.playOnAwake = false; source.loop = loop; } private void Start() { if (playOnSpawn) Play(); } public void Play() { if (randomizeClip) clipRandomizer.RandomizeClip(); else clipRandomizer.PickFirst(); if (randomizePitch) pitchRandomizer.RandomizePitch(); source.Play(); Debug.Log("Played Enhanced AudioSource with clip: " + source.clip.name); if(loopButRandom) { StartCoroutine(LoopRandom()); } } IEnumerator LoopRandom() { loopingButRandomLength = source.clip.length; yield return new WaitForSeconds(loopingButRandomLength); Play(); } }