Unity3D动态加载外部MovieTexture视频

 

网上大家也写了很多Unity3D中播放视频的教程,关于播放外部视频的还是比较少,所以写这篇文章,不足之处,还望读者指正。

在Unity3D中,我们一般使用播放视频的方法:将*.mov,*.mp4等格式拖拽到Asset中目录,Unity3D会转换为MovieTexture,音频AudioClip在子节点可找到。但,如果我们想动态加载外部视频,该怎么做呢?以下附上实现脚本,可自行修改。

[csharp] view plain copy
 
  1. using UnityEngine;  
  2. using System.Collections;  
  3. using System.IO;  
  4.    
  5. //[RequireComponent(typeof(AudioSource))]  
  6. public class MoviePlayer : MonoBehaviour  
  7. {  
  8.      
  9.    private  MovieTexturemovieTexture;//  
  10.    private string movieDir = "/Data/Movie";//根目录下  
  11.    
  12.    private float movietime;  
  13.     privatestatic MoviePlayer instance;  
  14.    public static MoviePlayer Instance  
  15.     {  
  16.        get  
  17.        {  
  18.            return instance;  
  19.        }  
  20.     }  
  21.    void Start()  
  22.     {  
  23.       StartCoroutine(DownloadMovie());  
  24.    
  25.        Play();  
  26.    
  27.        instance = this;  
  28.     }  
  29.    
  30.    
  31.    public void Play()  
  32.     {  
  33.        audio.Play();  
  34.        movieTexture.Play();  
  35.          
  36.          
  37.        Debug.Log("Play");  
  38.     }  
  39.    
  40.    public void Pause()  
  41.     {  
  42.        audio.Pause();  
  43.        movieTexture.Pause();  
  44.        Debug.Log("Pause");  
  45.    
  46.     }  
  47.    
  48.    public void Stop()  
  49.     {  
  50.        audio.Stop();  
  51.        movieTexture.Stop();  
  52.        Debug.Log("Stop");  
  53.     }  
  54.    
  55.    public bool IsPlaying()  
  56.     {  
  57.        return audio.isPlaying;  
  58.     }  
  59.    
  60.    public float GetMovieTime()  
  61.     {  
  62.        return audio.time;  
  63.     }  
  64.    
  65.    IEnumerator DownloadMovie()  
  66.    {//WWW www = new WWW("file:///D://Project//Movie/Data/Movie//movie.ogv");  
  67.    
  68.        string[] files = Directory.GetFiles(Directory.GetCurrentDirectory() +movieDir);//PC版,其他版本只需要修改视频文件读取方式  
  69.        WWW www = new WWW("file:///" + files[0]);  
  70.        movieTexture = (MovieTexture)www.movie;  
  71.    
  72.        while(!movieTexture.isReadyToPlay)  
  73.             yield return www;  
  74.    
  75.    
  76.        renderer.material.mainTexture = movieTexture;//视频纹理  
  77.        audio.clip = movieTexture.audioClip;//音频  
  78.    
  79.    
  80.        Play();  
  81.     }  
  82. }  

 

原文地址:https://www.cnblogs.com/czaoth/p/5732995.html