2015-03-31 69 views
0

我想讓用戶使用文件瀏覽器導入歌曲從統一存儲添加。目前我正試圖在菜單中播放歌曲,只是爲了看看我是否正確加載了歌曲,但看起來我無法超越這個階段。 WWW功能對我來說沒有任何意義,我將需要有人很簡單地解釋它。在我看來,這應該打開文件瀏覽器,然後用戶選擇該文件,然後將選定的文件加載到音頻剪輯中。那麼調試播放按鈕應播放該音頻剪輯,但是通過暫停遊戲,我可以看到文件瀏覽器找到了該文件並且具有正確的字符串,但音頻從未正確分配給剪輯。我正在使用.wav和.ogg文件,所以格式沒有問題。Unity C#在運行時添加歌曲然後播放該歌曲

public FileBrowser fb = new FileBrowser(); 
public bool toggleBrowser = true; 
public string userAudio; 
public AudioSource aSource; 
public AudioListener aListener; 
public AudioClip aClip; 

void Start() 
{ 
    if (aSource == null) 
    { 
     aSource = gameObject.AddComponent<AudioSource>(); 
     aListener = gameObject.AddComponent<AudioListener>(); 
    } 
} 

void OnGUI() 
{ 
    // File browser, cancel returns to menu and select chooses music file to load 
    if (fb.draw()) 
    { 
     if (fb.outputFile == null) 
     { 
      Application.LoadLevel("_WaveRider_Menu"); 
     } 
     else 
     { 
      Debug.Log("Ouput File = \"" + fb.outputFile.ToString() + "\""); 
      // Taking the selected file and assigning it a string 
      userAudio = fb.outputFile.ToString(); 


     } 

    } 
} 

public void playTrack() 
{ 
    //assigns the clip to the audio source and plays it 
    aSource.clip = aClip; 
    aSource.Play(); 
} 

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; 
    }   
} 

}

回答

0

有可能給你造成一些麻煩的幾件事情。 我不確定文件瀏覽器插件的工作原理,但是您發佈PlayTrack()函數的代碼永遠不會被調用,並且LoadFilePC協程永遠不會啓動。即使您正確加載文件,它也不會被分配到AudioSource或播放。

嘗試添加「playTrack();」在您的協同程序結束時,在選擇文件後使用MonoBehaviour.StartCoroutine()函數啓動它。

+0

非常感謝!發現。我需要的是協程開始。 – Kimmy 2015-04-02 09:53:11