移动平台播放非全屏视频

前一阵子公司项目有一个需求,要在移动平台播放一个非全屏视频,并且把它整合在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材质球即可,当然用代码动态创建也可以,这里就不再展开了。

kisence

潮落江平未有风。