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

本文关键字:文件 音频 电影 Unity3d | 更新日期: 2023-09-27 18:19:14

我有一个关于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个人版。

编辑:我尝试了这些建议,但无论我怎么做,它仍然不起作用。

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

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

这是我如何修复你的代码。首先检查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();
}