是的,我知道这个功能在编辑器中工作得很好但是当我构建到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();
}
}