我正在使用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();
}
答案 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://