zoukankan      html  css  js  c++  java
  • 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. }  

     

  • 相关阅读:
    微软2019暑期实习笔试题
    java中函数传值和传地址的问题
    不常见的机器学习算法
    隐马尔可夫模型
    hive中over的用法
    SQL基本练习
    drop、truncate和delete的区别
    概率函数,分布函数,密度函数
    greenDao:操作数据库的开源框架
    利用百度API Store接口进行火车票查询
  • 原文地址:https://www.cnblogs.com/czaoth/p/5732995.html
Copyright © 2011-2022 走看看