using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Serialization; public class RandomAudioWithDelay : MonoBehaviour { [SerializeField] [FormerlySerializedAs("source")] private AudioSource _source; [SerializeField] public List randomClips; [SerializeField] public float minDelay; private float _lastPlayTime = -1f; private float _ratioMinDelay = 1f; private System.Random random; private void Awake() { random = new System.Random(); } public void PlayNext() { if (Time.time <= _lastPlayTime + minDelay * _ratioMinDelay) { return; } _lastPlayTime = Time.time; AudioClip clip = OHM.UnityToolkit.RandomExtensions.ListElem(random, randomClips); if (clip != null) { _source.PlayOneShot(clip); } } public void SetRatioMinDelay(float ratio) { _ratioMinDelay = ratio; } }