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