prototyping
This commit is contained in:
94
Assets/Scripts/Prep/MusicLoader.cs
Normal file
94
Assets/Scripts/Prep/MusicLoader.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class MusicLoader : MonoBehaviour
|
||||
{
|
||||
public AudioSource audioSource;
|
||||
public Text txtPath;
|
||||
public RectTransform musicFileSelectionParent;
|
||||
public GameObject musicFileSelectionPrefab;
|
||||
public GameObject musicFilePanel;
|
||||
|
||||
|
||||
public static MusicLoader instance;
|
||||
|
||||
void Awake(){
|
||||
instance= this;
|
||||
}
|
||||
|
||||
public void ShowMusicFileSelection(){
|
||||
musicFilePanel.SetActive(true);
|
||||
PopulateMusicFileSelection();
|
||||
}
|
||||
|
||||
public void OnFileSelected(string file, bool containsRoot = false){
|
||||
musicFilePanel.SetActive(false);
|
||||
LoadFile(containsRoot ? file : (Application.persistentDataPath + file));
|
||||
}
|
||||
|
||||
|
||||
public void LoadFile(string file){
|
||||
txtPath.text = file;
|
||||
if(file.Contains("\\")){
|
||||
txtPath.text = file.Replace("\\","/");
|
||||
}
|
||||
StartCoroutine(LoadAudioCoroutine(file));
|
||||
}
|
||||
|
||||
private IEnumerator LoadAudioCoroutine(string fileName)
|
||||
{
|
||||
string filePath = Path.Combine(Application.persistentDataPath, fileName);
|
||||
string url = "file://" + filePath;
|
||||
|
||||
UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.WAV); // Use AudioType.MPEG for MP3 files
|
||||
yield return www.SendWebRequest();
|
||||
|
||||
if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError)
|
||||
{
|
||||
Debug.LogError(www.error);
|
||||
}
|
||||
else
|
||||
{
|
||||
AudioClip clip = DownloadHandlerAudioClip.GetContent(www);
|
||||
audioSource.clip = clip;
|
||||
AudioAnalyzer.instance.audioClip = clip;
|
||||
AudioAnalyzer.instance.updateData();
|
||||
// audioSource.Play();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
txtPath.text = Application.persistentDataPath;
|
||||
PopulateMusicFileSelection();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void PopulateMusicFileSelection(){
|
||||
for(int i=0; i < musicFileSelectionParent.childCount; i++){
|
||||
|
||||
Destroy(musicFileSelectionParent.GetChild(i).gameObject);
|
||||
}
|
||||
|
||||
string[] files =Directory.GetFiles(Application.persistentDataPath);
|
||||
foreach(string file in files){
|
||||
if(!file.Contains(".wav")){continue;}
|
||||
|
||||
GameObject newItem = Instantiate(musicFileSelectionPrefab, musicFileSelectionParent);
|
||||
newItem.AddComponent<OnMusicFileSelected>();
|
||||
newItem.GetComponentInChildren<Text>().text = file.Replace(Application.persistentDataPath, "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void CopyDataPath(){
|
||||
GUIUtility.systemCopyBuffer = Application.persistentDataPath;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user