Unity3D动态加载外部MovieTexture视频

来源:互联网 发布:java udp编程和 tcp 编辑:程序博客网 时间:2024/05/17 22:47


         开场动画是每个游戏中必不可少的部分,像一般做测试的时候都用自己制作好的视频来代替。我们在Unity中播放视频的时候一般都是把视频直接拖到Asset目录下,然后播放实现!!!

        但是在今天,教大家一个动态加载外部视频!在Unity中,我们一般都是将 *.mov  *.mp4等格式拖拽进来,Unity会自动转换为MovieTexture,音频AudioClip在子节点可以直接找到。但有时候我们想动态加载?怎么办呢?

        废话不多说,直接附上源码,可自行修改!!!


using UnityEngine;  using System.Collections;  using System.IO;     //[RequireComponent(typeof(AudioSource))]  public class MoviePlayer : MonoBehaviour  {          private  MovieTexturemovieTexture;//     private string movieDir = "/Data/Movie";//根目录下        private float movietime;      privatestatic MoviePlayer instance;     public static MoviePlayer Instance      {         get         {             return instance;         }      }     void Start()      {        StartCoroutine(DownloadMovie());            Play();            instance = this;      }           public void Play()      {         audio.Play();         movieTexture.Play();                           Debug.Log("Play");      }        public void Pause()      {         audio.Pause();         movieTexture.Pause();         Debug.Log("Pause");         }        public void Stop()      {         audio.Stop();         movieTexture.Stop();         Debug.Log("Stop");      }        public bool IsPlaying()      {         return audio.isPlaying;      }        public float GetMovieTime()      {         return audio.time;      }        IEnumerator DownloadMovie()     {//WWW www = new WWW("file:///D://Project//Movie/Data/Movie//movie.ogv");            string[] files = Directory.GetFiles(Directory.GetCurrentDirectory() +movieDir);//PC版,其他版本只需要修改视频文件读取方式         WWW www = new WWW("file:///" + files[0]);         movieTexture = (MovieTexture)www.movie;            while(!movieTexture.isReadyToPlay)              yield return www;               renderer.material.mainTexture = movieTexture;//视频纹理         audio.clip = movieTexture.audioClip;//音频               Play();      }  }  

    以上就是通过IO流读取,然后再用WWW动态加载进来,然后进行播放!!!

    大家不要谢我!我亲自测试过!!!直接Ctrl + C 到你的Unity中吧!!!


   总结:

            提醒一点的是,这是本地加载和网络加载,所以你本地视频如果换地址了记得一定要在这个脚本中把地址换成你的新地址,否则会找不到视频!!!


0 0