提要:在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处。脚本中给出了三个函数分别对应的是
视频的播放、暂停、停止。
方法二:基于Unity 的OnGUI实现,这样视频就是以UI元素存在于游戏中。
实现方法:这种方法不需要载体。直接可以将脚本挂在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来播放视频。