提要:在Unity 中 视频支持.mov、.mpg、.mpeg、.mp4、.avi和.asf。而Unity对于视频都是以MovieTexture来使用的。
如果视频中有声音那么在视频文件下面会相应生成audio文件。所以一个完整的视频播放是应该画面和音频的同步播放。
方法一:基于GameObject上,这种方式可以让影片以任何方式播放,比如你要实现一个教室,教室讲台上有个投影幕,电影应当在投影幕上播放。这样影片播放就是实打实的在荧幕这个游戏GameObject上面播放。
实现方法:就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面,首先你要在播放的地方加个plane。上面挂一个 Play 脚本。
using UnityEngine; using System.Collections; public class Play : MonoBehaviour { //电影纹理 public MovieTexture movTexture; //播放视频要用到的MovieTexture属于贴图Texture的子类 public AudioSource audioSource; void Start() { //设置当前对象的主纹理为电影纹理 renderer.material.mainTexture = movTexture; //设置电影纹理播放模式为循环 movTexture.loop = true; //如果有声音才播放声音 audioSource = GetComponent<AudioSource>(); } public void OnPlay() {<pre name="code" class="csharp"> <span style="white-space:pre"> </span>if(!movTexture.isPlaying)
<span style="white-space:pre"> </span>{
<pre name="code" class="csharp"> <span style="white-space:pre"> </span> movTexture.Play(); // audioSource.Play();
<span style="white-space:pre"> </span>}} public void OnPause() { movTexture.Pause(); // audioSource.Pause(); } public void OnStop() { movTexture.Stop(); // audioSource.Stop(); }} 我们将视频生成的 MovieTexture 拖放复制到movTexture 中,如果有声音,应当给plane添加AudioSource组件并把把生成的音频文件拖放到AudioClip处。脚本中给出了三个函数分别对应的是 视频的播放、暂停、停止。
实现方法:这种方法不需要载体。直接可以将脚本挂在Mamera上。
using UnityEngine; using System.Collections; public class Play : MonoBehaviour { //电影纹理 public MovieTexture movTexture; public AudioSource audioSource; void Start() { //设置电影纹理播放模式为循环 movTexture.loop = true; //如果有声音才播放声音 audioSource = GetComponent<AudioSource>(); } void OnGUI() { //绘制电影纹理 GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), movTexture, ScaleMode.StretchToFill); } public void OnPlay() { movTexture.Play(); // audioSource.Play(); } public void OnPause() { movTexture.Pause(); // audioSource.Pause(); } public void OnStop() { movTexture.Stop(); // audioSource.Stop(); } }
//在移动设备上播放视频 public class Test : MonoBehaviour { void OnGUI() { if (GUI.Button (new Rect (20,10,200,50), "PLAY ControlMode.CancelOnTouch")) { Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput); } if (GUI.Button (new Rect (20,90,200,25), "PLAY ControlMode.Full")) { Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Full); } if (GUI.Button (new Rect (20,170,200,25), "PLAY ControlMode.Hidden")) { Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Hidden); } if (GUI.Button (new Rect (20,250,200,25), "PLAY ControlMode.Minimal")) { Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Minimal); } } }直接使用第三方插件AVPro QuickTime来播放视频。