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

         

查看全文
  • 相关阅读:
    教程:在 Visual Studio 中开始使用 Flask Web 框架
    教程:Visual Studio 中的 Django Web 框架入门
    vs2017下发现解决python运行出现‘No module named "XXX""的解决办法
    《sqlite权威指南》读书笔记 (一)
    SQL Server手工插入标识列
    hdu 3729 I'm Telling the Truth 二分图匹配
    HDU 3065 AC自动机 裸题
    hdu 3720 Arranging Your Team 枚举
    virtualbox 虚拟3台虚拟机搭建hadoop集群
    sqlserver 数据行统计,秒查语句
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10546172.html
  • Copyright © 2011-2022 走看看