从unity升级到5.0后一直没有研究过unity的播放视频问题。最近需要研究这个方面的问题,我会连续更新视频相关的博文。
首先说unity所支持的视频格式有:.mov .mpg .mpeg .mp4 .avi 和.asf
将视频文件拖拽到project视图中,系统会自动生成电影纹理资源
首先说如何播放本地视频(仅pc端可用);具体操作:
在unity5.2里(据说是5.0以上版本,我测试版本为5.2)如果直接拖一个视频(该视频为符合unity支持的视频)到project里是视频会显示白色的,这样是无法播放的。
并且unity会提示缺少QuickTime Player的错误。解决方法很简单只要把这个视频用QuickTime Player(这个是苹果公司的一个播放器工具)这个工具播放一次然后再拖动到项目里,如果拖动一次不成功就关闭unity然后再打开再拖进去,这样你会看到被拖进去的视频不再是白色的而是变了样子,如下:
这样就说明这个视频是可以播放的了。
然后建立一个cube把cube放到相机适合的位置,拉伸成你想要的比例或者代码定义你想要的长宽高等,如下图:
(用UGUI中的Raw Image,加上meshrender组件和声音组件也可以实现该功能。2D还是3D根据自己需求来呗)
上图中可以看到我的在上面挂载了一个脚本,脚本内容具体如下:
using UnityEngine;
using System.Collections;
using UnityEngine.Audio;
using UnityEngine.UI;
public class testplaymovie : MonoBehaviour {
public MovieTexture movietexture;
private MeshRenderer mr;
// Use this for initialization
void Start () {
mr = GetComponent<MeshRenderer>();
mr.material.mainTexture = movietexture;
movietexture.loop = true;
}
void OnGUI()
{
if (GUILayout.Button("播放/继续"))
{
//播放/继续播放视频
if (!movietexture.isPlaying)
{
movietexture.Play();
// audio.Play();
}
}
if (GUILayout.Button("暂停播放"))
{
//暂停播放
movietexture.Pause();
// audio.Pause();
}
if (GUILayout.Button("停止播放"))
{
//停止播放
movietexture.Stop();
// audio.Stop();
}
}
}
在代码中可以看到我注释掉了声音的代码,因为我发现只要勾选了play on awake的选项,声音会跟着视频播放和暂停。完全不用代码再去控制,也许是unity5.0以上版本变的牛逼了。
通过以上的方法就可以播放出本地的视频了。这里我用的是gui的方法控制的,当然也可以用ugui控制按钮交互。。。效果如下:
这样就搞定了unity5.2本地视频的播放。之后我会研究并更新更多有关unity视频的博客。