Unity 3D,WWW功能在编辑器中工作,但是当我构建到PC时,音频文件没有加载或播放

时间:2015-04-16 00:24:17

标签: audio unity3d runtime

是的,我知道这个功能在编辑器中工作得很好但是当我构建到PC时,没有运气来获取音频。音频源和侦听器在运行时加载到另一个类中。这在编辑器中运行时非常有效,但是当我在运行时尝试播放音频时,我将游戏构建到PC上没有运气。

# void Start()
    {
        if (aSource == null && aListener == null)
        {
            //creating the audio sources for the music to play
            //and audio listener in order to hear the music
            aSource = gameObject.AddComponent<AudioSource>();
            aListener = gameObject.AddComponent<AudioListener>();
            toggleBrowser = false;
        }
        // Getting the component play Button
        playButton = GameObject.FindGameObjectWithTag("PlayButton");
        button = playButton.GetComponent<Button>();

    }

    public void toggleFileBroswer()
    {
        // Toggle the file browser window
        toggleBrowser = !toggleBrowser;
    }

    public void OnGUI()
    {

        // File browser, cancel returns to menu and select chooses music file to load
        if (toggleBrowser)
        {
            if (fb.draw())
            {
                if (fb.outputFile == null)
                {
                    Application.LoadLevel("_WaveRider_Menu");
                    toggleBrowser = !toggleBrowser;
                }
                else
                {
                    Debug.Log("Ouput File = \"" + fb.outputFile.ToString() + "\"");
                    // Taking the selected file and assigning it a string
                    userAudio = fb.outputFile.ToString();
                    //Starting the load process for the file
                    StartCoroutine(LoadFilePC(userAudio));
                    toggleBrowser = false;
                    startLoad = true;
                }

            }
        }
    }

    void Update()
    {
        // Making the play button inactive untill the file has loaded
        if (startLoad)
        {
            loadTime += Time.deltaTime;
        }

        if (loadTime >= 5)
        {
            button.interactable = true;
        }
    }

    public void playTrack()
    {
        // Dont destroy these GameObjects as we load the next scene
        Object.DontDestroyOnLoad(aSource);
        Object.DontDestroyOnLoad(aListener);
        //assigns the clip to the audio source and play it
        aSource.clip = aClip;
        aSource.Play();
        Debug.Log("Playing track");
    }

    IEnumerator LoadFilePC(string filePath)
    {
        filePath = userAudio;

        print("loading " + filePath);
        //Loading the string file from the File browser
        WWW www = new WWW("file:///" + filePath);

        //create audio clip from the www
        aClip = www.GetAudioClip(false);

        while (!aClip.isReadyToPlay)
        {
            yield return www;
        }           
    }

    public void exit()
    {
        // Exit game, only works on built .exe not in the editor window
        Application.Quit();
    }
}

0 个答案:

没有答案