void InitMusicGroup() { musicUIItemList = new List <CustomMusicUIItem>(); string[] fileList = Directory.GetFiles(Application.streamingAssetsPath, "*.mp3"); Debug.Log(string.Format("{0} files found.", fileList.Length)); foreach (var filePath in fileList) { Debug.Log("Found music: " + filePath); string fileName = filePath.Substring(filePath.LastIndexOf(@"\") + 1); CustomMusicUIItem item = CreateMusicUIItem(fileName); musicUIItemList.Add(item); } }
IEnumerator LoadAudioClipAsync(CustomMusicUIItem item, string fileName) { string wwwPath = Path.Combine("file:///" + Application.streamingAssetsPath, fileName); using (var loader = new WWW(wwwPath)) { yield return(loader); if (!string.IsNullOrEmpty(loader.error)) { // Error Debug.LogError("Load Streaming Assets Error: " + loader.error); yield break; } item.clip = NAudioPlayer.FromMp3Data(loader.bytes); item.clip.name = fileName; } }
CustomMusicUIItem CreateMusicUIItem(string fileName) { GameObject itemGameObject = Instantiate(musicUIItemPrefab, musicUIGroup.transform, false); itemGameObject.name = fileName; itemGameObject.SetActive(true); CustomMusicUIItem item = new CustomMusicUIItem { gameObject = itemGameObject, }; item.transform = item.gameObject.transform; item.titleLabel = item.transform.Find("TitleLabel").GetComponent <Text>(); item.titleLabel.text = fileName; item.listenButton = item.transform.Find("ListenButton").GetComponent <Button>(); item.listenButton.onClick.AddListener(() => { if (audio.clip == item.clip) { return; } audio.DOFade(0, fadeDuration).SetEase(Ease.InQuad).OnComplete(() => { audio.clip = item.clip; audio.Play(); audio.DOFade(1, fadeDuration).SetEase(Ease.InQuad); }); }); item.playButton = item.transform.Find("PlayButton").GetComponent <Button>(); item.playButton.onClick.AddListener(() => { StartGame(item.clip); }); StartCoroutine(LoadAudioClipAsync(item, fileName)); return(item); }