using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; namespace UltraCombos { public class SoundLoader : MonoBehaviour { [SerializeField] string folder; [SerializeField] List filenames = new List(); [SerializeField] bool loop = false; List clips = new List(); AudioSource source = null; private void Start() { if (filenames.Count == 0) { string filename = gameObject.name; LoadFile(filename); } else { foreach (var filename in filenames) { LoadFile(filename); } } source = gameObject.AddComponent(); source.loop = loop; } void LoadFile(string filename) { string path = $"{Application.dataPath}/../../{folder}/{filename}"; if (System.IO.File.Exists(path)) { var ext = System.IO.Path.GetExtension(path); AudioType type = AudioType.UNKNOWN; if (ext.Equals(".AIF", System.StringComparison.CurrentCultureIgnoreCase)) { type = AudioType.AIFF; } else if (ext.Equals(".WAV", System.StringComparison.CurrentCultureIgnoreCase)) { type = AudioType.WAV; } if (type != AudioType.UNKNOWN) { StartCoroutine(LoadAudioFile($"file://{path}", type)); } else { } } } private void Update() { } public void PlayOneShot() { if (clips.Count > 0) source.PlayOneShot(clips[Random.Range(0, clips.Count)]); } private void FadeIn() { } private void FadeOut() { } IEnumerator LoadAudioFile(string uri, AudioType type) { using (var www = UnityWebRequestMultimedia.GetAudioClip(uri, type)) { yield return www.SendWebRequest(); if (www.isNetworkError || www.isHttpError) { Debug.Log(www.error); } else { using (var hanlder = www.downloadHandler as DownloadHandlerAudioClip) { if (hanlder != null) { clips.Add(hanlder.audioClip); } } } yield return null; } } } }