2016-07-07 326 views
1

我在運行時單擊時更新Unity3D中的AudioSource。Unity3D中的AudioSource不播放WAV文件

我創建了一個Cube遊戲對象。

當我點擊多維數據集時,我發送屬性到我的音頻源。

注意:這將最終播放許多其他wav文件,這些wav文件是通過管道分隔的wav文件(存在於Assets Audio文件夾中)的字符串數組傳遞的。

所以我需要更新每個CLICK EVENT的AudioSource,每次它會加載一個新的文件從數組中選擇。

好了,在Unity3D編輯器顯示從劇本我的公共變量,它在運行時將其填充了(在點擊立方體。)

路徑變量在Unity3D編輯器完美地顯示出來。

但問題是雖然音頻剪輯財產在編輯器中顯示的小橙色音頻標誌(好像有什麼東西在那裏/加載),我從我的資產搶過文件的名稱/音頻文件夾總是空的。

沒有戲,但我得到沒有錯誤

而且性能playOnAwake體積。都通過我的劇本向我展示了我所表達的內容。

注:在所述第一圖像,所述路徑可變正確地指向.wav文件。

爲什麼我的.wav不能播放?

爲什麼.wav文件名不出現在音頻片段文本框區域?

My publicly declared variables in the script.

My created Audio Source.

public Color clickColor; 
public Color releaseColor; 
public int clickcount = 0;  
public WWW www; 
public AudioClip myAudioClip; 
public string path; 

void CubeClicked(GameObject tmpGameObject) 
{ 
    // CLICK COUNT 
    clickcount++; 

    // CLICK COLOR 
    tmpGameObject.GetComponent<Renderer>().materials[0].color = clickColor; 

    // IS TRIGGER 
    tmpGameObject.GetComponent<Collider>().isTrigger = true; 

    //AUDIO 
    path = "file://" + Application.dataPath.Substring(0, Application.dataPath.LastIndexOf("/")) + "/Assets/Audio/JetEngine.wav"; 
    www = new WWW(path); 
    myAudioClip = www.audioClip; 

    tmpGameObject.GetComponent<AudioSource>().clip = myAudioClip; 
    tmpGameObject.GetComponent<AudioSource>().playOnAwake = false; 
    tmpGameObject.GetComponent<AudioSource>().volume = 0.999f; 
    tmpGameObject.GetComponent<AudioSource>().Play(); 

} 
+1

你檢查了音頻列表器嗎? –

+3

嘗試這樣做:yield return www;在新的WWW()之後。另請檢查您的音量是否已啓用。 – Cabrra

+0

Cabbra你的建議讓我走上了正確的軌道。它現在有效。 :) –

回答

2

Cabbra的建議是我需要的。添加「收益回報www」迫使我使用IEnumerator,神奇地,它開始工作!

StartCoroutine(playMusic(tmpGameObject)); 

public IEnumerator playMusic(GameObject tmpGameObject){ 
    /*Same code from before goes here!*/ 
} 
+0

我如何向卡布拉獎勵積分? –

+1

你不能因爲他*評論*代替發佈答案。回答你自己的問題是好的,你可以在48小時後接受它。 –

+0

謝謝Paul-Jan。 :) –