主要有两个方法可以是现在Unity中播放影片,目前Unity中可以播放影片的格式有 .mov、.mpg、.mpeg、.mp4、.avi和.asf
方法一
使用 MovieTexture[影片文理],创建一个可以播放影片的平面,比如Cube或者Plane都可以,再利用脚本使影片可以在Unity中播放
代码示例如下:
using UnityEngine;
using System.Collections;
public class Test: MonoBehaviour
{
//电影纹理
public MovieTexture movTexture;
void Start()
{
//设置当前对象的主纹理为电影纹理
renderer.material.mainTexture = movTexture;
//设置电影纹理播放模式为循环
movTexture.loop = true;
}
void OnGUI()
{
if(GUILayout.Button("播放/继续"))
{
//播放/继续播放视频
if(!movTexture.isPlaying)
{
movTexture.Play();
}
}
if(GUILayout.Button("暂停播放"))
{
//暂停播放
movTexture.Pause();
}
if(GUILayout.Button("停止播放"))
{
//停止播放
movTexture.Stop();
}
}
}
2.要点击Assets中的Import New Asset将需要播放的影片导入进Unity的Project中,不可直接将影片拖入Project中,这样文件没有一个转换过程会导致无法使用
3.如果影片是有音源的,那么转换后会生成一个audio文件,此时要给播放影片的平面添加一个Audio Source组件,将影片的音源文件放入
4.视频的分辨率越高,转换的速度越慢(非常非常慢),因此最好不要选分辨率高的影片进行转换
方法二
使用GUI.DrawTexture[绘制纹理],创建一个可以播放影片的平面,比如Cube或者Plane都可以,再利用脚本使影片可以在Unity中播放
代码示例如下:
using UnityEngine;
using System.Collections;
public class Test: MonoBehaviour
{
//电影纹理
public MovieTexture movTexture;
void Start()
{
//设置电影纹理播放模式为循环
movTexture.loop = true;
}
void OnGUI()
{
//绘制电影纹理
GUI.DrawTexture (new Rect (0,0, Screen.width, Screen.height),movTexture,ScaleMode.StretchToFill);
if(GUILayout.Button("播放/继续"))
{
//播放/继续播放视频
if(!movTexture.isPlaying)
{
movTexture.Play();
}
}
if(GUILayout.Button("暂停播放"))
{
//暂停播放
movTexture.Pause();
}
if(GUILayout.Button("停止播放"))
{
//停止播放
movTexture.Stop();
}
}
}
以上两种方法是无法在IOS或者Android等移动设备上面进行影片播放的,因此Unity给我们提供了另外一种方式,Handheld.PlayFullScreenMovie()
using UnityEngine;
using System.Collections;
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);
}
}
}