Unity3d中的电影文件和音频文件

时间:2015-10-25 18:10:44

标签: c# audio unity3d mp4 ogg

我对Unity中的MovieTexture有一个问题: 我想在同一个游戏对象上加载Unity中的电影和音频文件(不是同时)。 所以,我必须区分音频和视频文件,但我没有让它工作。这就是我想要做的事情:

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个人版。

编辑:我尝试了这些建议,但无论我做什么,它仍然无效。

2 个答案:

答案 0 :(得分:0)

displayName

答案 1 :(得分:0)

以下是我修复代码的方法。首先,检查您的WWW对象file.movie是否为空。如果它不为空则表示您已加载电影文件。如果它为空,请检查file.audioClip是否为空。如果它不为空,则表示您已加载音频文件。

请注意Unity仅支持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();
}