前一阵子公司项目有一个需求,要在移动平台播放一个非全屏视频,并且把它整合在UGUI里,unity是不原生支持这个需求的,经过一番努力,终于找到了解决方案,在这里分享给大家。
使用插件 Mobile Movie Texture (支持unity 5.0)
插件下载地址: 我的网盘 (如果链接失效请给我发邮件)
由于这个插件只支持ogg、ogv格式的视频,所以还需要一个软件来把我们的视频转换成对应的格式,这里我们使用TheoraConverter.Net来转换
软件下载地址: 我的网盘
你可以使用VLC media player来预览你转换后的成果
软件下载地址: 我的网盘
好,前期准备工作完成了
这个插件的原理是将视频渲染在一个plane上,再通过摄像机拍摄这个plane输出
说一下步骤吧:
1.创建一个plane
2.将 MobileMovieTexture
这个脚本拖到这个plane上
3.将plane的材质球改为 Movie (插件自带,在 MobileMovieTexture/Materials
路径下)
4.再将这个 Movie 材质球赋给 MobileMovieTexture
脚本上的MovieMaterials
属性
5.将想要播放的视频拖动到 MobileMovieTexture
脚本上的Movie
属性(注意这个视频只能在 StreamingAssets 目录下)
6.点击run看看成果吧~
(恕我不截图了 )
另:
1.要控制视频播放有两种方式,
第一种是使用插件自带的TestMobileTexture
脚本拖动到plane上,用它的onGUI控制,
另一种是直接调用 MobileMovieTexture
里面的方法,具体方法点开 MobileMovieTexture
脚本中的Methods语句块自行查阅便可
2.如果想要使用代码动态改变视频,可以在MobileMovieTexture
中加这样一个函数
public void setVedio(string vedioName)
{
m_path = "yourVedioPath/" + vedioName + ".ogv";
Play();
}
其中yourVedioPath
是你的视频路径,这个路径是从unity的StreamingAssets路径下开始的,请注意。
3.如果要同时播放多个视频,需要不同的材质球,复制一份Movie材质球即可,当然用代码动态创建也可以,这里就不再展开了。