Пример #1
0
    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);
        }
    }
Пример #2
0
    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;
        }
    }
Пример #3
0
    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);
    }