在Unity 5中从磁盘加载电影

时间:2015-05-07 13:47:57

标签: c# unity3d

我正在使用Unity 5和C#,我想在运行时从磁盘上的任何位置加载电影,而不是从Resources文件夹加载。

这可以使用Texture2D类型中的.LoadImage(bytes)方法对常规图像纹理进行处理,但似乎没有MovieTexture的等效物。

代码显示了如何从资源文件夹中执行此操作,但是如何修改它以从磁盘加载?

由于

public void loadVideo (GameObject container, string video)
{
    // Load MovieTexture from Resources Folder
    MovieTexture mat = (MovieTexture)Resources.Load(Path.GetFileNameWithoutExtension(video), typeof(MovieTexture));

    MeshRenderer ren = container.GetComponent<MeshRenderer>();
    ren.material.mainTexture = mat;    
    mat.Play();      
}

1 个答案:

答案 0 :(得分:1)

你可以。使用WWW类来实现此目的。

IEnumerator loadAndPlay(){
WWW diskMovieDir = new WWW("file:///C:/yourvideoDir/video.mp4");

//Wait for file finish loading
while(!diskMovieDir.isDone){
yield return null;
}

//Save the loaded movie from WWW to movetexture
MovieTexture movieToPlay = diskMovieDir.movie;

//Hook the movie texture to the current renderer
MeshRenderer ren = container.GetComponent<MeshRenderer>();
ren.material.mainTexture = movieToPlay ;    

movieToPlay.play();
}

现在你可以通过启动协同程序来调用它。

StartCoroutine(loadAndPlay());

我没有编译它,因此可能存在编译错误,但如果有错误,您可以轻松修复它。如果编译它也应该没有问题。请注意,网址必须以 file:/// 开头。如果这不起作用,请尝试 file://