• Unity3D游戏开发之在Unity3D中视频播放功能的实现


    版权声明:欢迎订阅公众号【5厘米的理想】,愿生命里的每个小理想,都能成为生命里的小确幸。本文地址为: https://blog.csdn.net/qinyuanpei/article/details/24130347

          大家好,我是秦元培。欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei

          今天我们来做一个在Unity3D中实现视频播放的实例。首先,Unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。我们仅仅须要将这些文件放在项目目录里就可实现视频文件的导入。

    在Window系统下。我们须要在苹果公司的QuickTime软件下才干顺利地将视频文件导入Unity。假设视频文件含有音频文件。那么在导入Unity后会生成对应的音频文件。在Unity3D中实现视频播放的方法有两种:基于纹理贴图、基于GUI。我们以下分别来解说:

           1、基于纹理贴图

    using UnityEngine;
    using System.Collections;
    
    public class MovieByTexture : MonoBehaviour {
    	
    	//电影纹理贴图
    	public MovieTexture mMovie;
    	//电影音频源
    	private AudioSource mAudio;
    	
    	//媒体信息定义
    	private string mediaName;//媒体名称
    	private string mediaLength;//媒体长度
    	
    	void Start () 
    	{
    	  mAudio=GetComponent<AudioSource>();
    	  //设置当前对象的主纹理为电影纹理贴图
    	  renderer.material.mainTexture=mMovie;
    	  //设置电影纹理播放模式为循环
    	  mMovie.loop=true;
    	  //開始播放电影
    	  mMovie.Play();
    	  //開始播放音乐
    	  mAudio.Play();
    	}
    	
    	void Update () 
    	{
    	  //在这里更新媒体信息
    	  mediaName=mMovie.name;
    	  mediaLength=mMovie.duration.ToString();
    	}
    	
    	void OnGUI()
    	{
    	  //播放控制
    	  if(GUILayout.Button("播放",GUILayout.Height(30)))
    	  {
    		mMovie.Play();
    	    mAudio.Play();
    	  }
    	  //暂停控制
    	  if(GUILayout.Button("暂停",GUILayout.Height(30)))
    	  {
    		mMovie.Pause();
    	    mAudio.Pause();
    	  }
    	  //停止控制
    	  if(GUILayout.Button("停止",GUILayout.Height(30)))
    	  {
    		mMovie.Stop();
    	    mAudio.Stop();
    	  }
    		
    	  //绘制文本信息
    	  GUILayout.Label("媒体名称:"+mediaName,GUILayout.Height(30));
    	  GUILayout.Label("媒体长度:"+mediaLength,GUILayout.Height(30));	;
    	}
    }
    

           2、基于GUI

    using UnityEngine;
    using System.Collections;
    
    public class MovieByGUI : MonoBehaviour {
    	
    	//电影纹理贴图
    	public MovieTexture mMovie;
    	//电影音频源
    	private AudioSource mAudio;
    	
    	//媒体信息定义
    	private string mediaName;//媒体名称
    	private string mediaLength;//媒体长度
    	
    	void Start () 
    	{
    	  mAudio=GetComponent<AudioSource>();
    	  //设置当前对象的主纹理为电影纹理贴图
    	  renderer.material.mainTexture=mMovie;
    	  //设置电影纹理播放模式为循环
    	  mMovie.loop=true;
    	  //開始播放电影
    	  mMovie.Play();
    	  //開始播放音乐
    	  mAudio.Play();
    	}
    	
    	void Update () 
    	{
    	  //在这里更新媒体信息
    	  mediaName=mMovie.name;
    	  mediaLength=mMovie.duration.ToString();
    	}
    	
    	void OnGUI()
    	{
    	  //绘制电影纹理贴图
    	  GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),mMovie);
    	  //播放控制
    	  if(GUILayout.Button("播放",GUILayout.Height(30)))
    	  {
    		mMovie.Play();
    	    mAudio.Play();
    	  }
    	  //暂停控制
    	  if(GUILayout.Button("暂停",GUILayout.Height(30)))
    	  {
    		mMovie.Pause();
    	    mAudio.Pause();
    	  }
    	  //停止控制
    	  if(GUILayout.Button("停止",GUILayout.Height(30)))
    	  {
    		mMovie.Stop();
    	    mAudio.Stop();
    	  }
    		
    	  //绘制文本信息
    	  GUILayout.Label("媒体名称:"+mediaName,GUILayout.Height(30));
    	  GUILayout.Label("媒体长度:"+mediaLength,GUILayout.Height(30));	;
    	}
    }
    

           代码十分简单。这里不再赘述了。我们能够直接在场景中创建一个Plane,然后将脚本拖放到该对象上。再指定了音频文件、视频文件后就能够实现视频的播放了。终于效果如图所看到的:



             今天的内容就是这样了,近期不知道该写点什么了。大家想了解什么内容的话,能够给我留言啊。  

             喜欢我的博客请记住我的名字:秦元培。我的博客地址是:blog.csdn.net/qinyuanpei

             转载请注明出处,本文作者:秦元培。本文出处:http://blog.csdn.net/qinyuanpei/article/details/24130347

         

  • 相关阅读:
    gnuplot learn note
    command line text process
    raspberry pi boot without HDMI
    gnuplot运行方式
    读取外部excel文件
    DB2中Lob is closed. ERRORCODE=4470的解决
    Myeclipse项目编码
    Json使用
    数组元素全排列递归算法
    XmlHttpRequest IE 乱码问题
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10546172.html
  • Copyright © 2020-2023  润新知