43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace Audio
 | |
| {
 | |
|     [CreateAssetMenu(menuName = "AudioClipGroup")]
 | |
|     public class AudioClipGroup : ScriptableObject
 | |
|     {
 | |
|         [Range(0, 2)] public float volumeMin = 1;
 | |
|         [Range(0, 2)] public float volumeMax = 1;
 | |
|         [Range(0, 2)] public float pitchMin = 1;
 | |
|         [Range(0, 2)] public float pitchMax = 1;
 | |
| 
 | |
|         public float delay = 0.1f;
 | |
|         public List<AudioClip> audioClips;
 | |
| 
 | |
|         private float _timestamp;
 | |
| 
 | |
|         public void OnEnable()
 | |
|         {
 | |
|             _timestamp = 0;
 | |
|         }
 | |
| 
 | |
|         public void Play()
 | |
|         {
 | |
|             if (AudioSourcePool.Instance == null) return;
 | |
| 
 | |
|             Play(AudioSourcePool.Instance.GetAudioSource());
 | |
|         }
 | |
| 
 | |
|         public void Play(AudioSource source)
 | |
|         {
 | |
|             if (audioClips.Count <= 0) return;
 | |
|             if (_timestamp > Time.time) return;
 | |
|             _timestamp = Time.time + delay;
 | |
| 
 | |
|             source.volume = Random.Range(volumeMin, volumeMax);
 | |
|             source.pitch = Random.Range(pitchMin, pitchMax);
 | |
|             source.clip = audioClips[Random.Range(0, audioClips.Count)];
 | |
|             source.Play();
 | |
|         }
 | |
|     }
 | |
| } |