今天我们来做一个在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();
- //设置当前对象的主纹理为电影纹理贴图
- 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();
- //设置当前对象的主纹理为电影纹理贴图
- 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,然后将脚本拖放到该对象上,再指定了音频文件、视频文件后就可以实现视频的播放了。最终效果如图所示:
今天的内容就是这样了,最近不知道该写点什么了,大家想了解什么内容的话,可以给我留言啊。