2015-10-25 67 views
0

我有關於Unity中的MovieTexture的問題: 我想在同一個遊戲對象(不是同時)在Unity中加載電影和音頻文件。 所以,我必須區分音頻和視頻文件,但我不明白它的工作原理。這是我想要做的:Unity3d中的電影文件和音頻文件

MovieTexture movieTexture; 
AudioSource audio = gameObject.GetComponent<AudioSource>(); 
WWW file = new WWW(@"file:///"+pathToFile); //example.mp4 or example.ogg 
if(movie) 
{ 
    movieTexture = file.movie; 
    gameObject.GetComponent<Renderer>().material.mainTexture = movieTexture; 
    audio.clip = movieTexture.audioClip; 
    movieTexture.Play(); 
    audio.Play(); 
} 
if(audio) 
{ 
    audio.clip = file.audioClip; 
    audio.Play() 
} 

我該怎麼做?

我正在使用Unity 5.2個人版。

編輯:我嘗試了這些建議,但它仍然不工作,不管我做什麼。

回答

0
if(file.movie != null) 
{ 
    //logic for processing movie; 
} 
else if (file.audioClip !=null) 
{ 
    //logic for processing audio; 
} 
+0

感謝您的回答!但是,它不起作用。 'if(file.movi​​e!= null)'總是如此,即使我只加載一個簡單的.ogg音頻文件。我看到,如果我嘗試加載音頻文件並將其轉換爲電影紋理,則Unity會在具有錯誤報告窗口的'movieTexture.Play();'點崩潰。你知道這個的另一個選擇嗎? – Tenshi

0

下面是我如何修復您的代碼。首先你檢查你的WWW對象file.movie是否爲空。如果它不爲空,則表示您已經加載電影文件。如果爲空,則檢查file.audioClip是否爲空。如果它不爲空,則表示您已經加載了音頻文件。

請注意,團結只支持的Ogg Theora格式的影片紋理加載(http://docs.unity3d.com/Manual/class-MovieTexture.html

MovieTexture movieTexture; 
AudioSource audio = gameObject.GetComponent<AudioSource>(); 
WWW file = new WWW(@"file:///" + pathToFile); //example.mp4 or example.ogg 
if(file.movie != null) 
{ 
    movieTexture = file.movie; 
    gameObject.GetComponent<Renderer>().material.mainTexture = movieTexture; 
    audio.clip = movieTexture.audioClip; 
    movieTexture.Play(); 
    audio.Play(); 
} 
else if(file.audioClip != null) 
{ 
    audio.clip = file.audioClip; 
    audio.Play(); 
} 
+0

感謝您的回答!但是,它不起作用。 'if(file.movi​​e!= null)'總是如此,即使我只加載一個簡單的.ogg音頻文件。我看到,如果我嘗試加載音頻文件並將其轉換爲電影紋理,則Unity會在具有錯誤報告窗口的'movieTexture.Play();'點崩潰。你知道這個的另一個選擇嗎? – Tenshi