在游戏中,往往需要在进入游戏时播放一段比较炫的开场动画(OP),已达到吸引玩家的目的。本文将介绍如何在unity3d游戏开发引擎中,播放各种平台下播放视频的方法。其中包括利用MovieTexture在win pc和mac pc即桌面环境下播放视频,利用Handheld.PlayFullScreenMovie方法来播放移动设备上播放视频。
关键字:unity3d,播放视频,MovieTexture,Handheld.PlayFullScreenMovie
桌面环境――MovieTexture
MovieTexture是Texture的子类,所以可以渲染在任意一个物体(GameObject)和材质(Material)上。详细见官方文档:
http://docs.unity3d.com/Documentation/Components/class-MovieTexture.html
以及
http://docs.unity3d.com/Documentation/ScriptReference/MovieTexture.html
注意MovieTexture只能是在Unity3d Pro版本中才有。另外还要注意Unity3d支持的视频格式,这里使用MP4格式。下面介绍使用方法:
首先创建一个项目,并且创建一个cube作为视频播放的载体(容器)。在Assets目录下拖人一个视频(这里是1.MP4)。等待导入完成之后,将这个视频拖到场景中的cube上。创建一个平行光,这样我们才能看到cube表面。适当调节摄像机位置和参数,能清楚看到cube表面即可。好,场景工作完成。
因为MovieTexture不会自动播放,所以要加入一个脚本,内容很简单,在Start方法中加入以下代码来播放视频:
renderer.material.mainTexture.Play();
好,回到unity3d,将脚本拖到cube上,运行。神奇时刻到来了,cube的各个面都有视频播放。
是不是可以在GUI上做一个全屏视频呢?GUI Texture?亲自行动吧!
移动设备――Handheld.PlayFullScreenMovie
由于MovieTexture在安卓和ios中不被支持,官方建议使用Handheld.PlayFullScreenMovie方法来播放视频,见:
http://docs.unity3d.com/Documentation/ScriptReference/Handheld.PlayFullScreenMovie.html
函数原型:
static function PlayFullScreenMovie (path : String, bgColor : Color = Color.black, controlMode : FullScreenMovieControlMode = FullScreenMovieControlMode.Full, scalingMode : FullScreenMovieScalingMode = FullScreenMovieScalingMode.AspectFit) : boolean
参数见文档。
这是Unity3D提供的一个全屏播放流媒体(视频)的方法。播放视频时,游戏会暂停,等待播放完成后将继续原来的游戏。
首先要在Assets目录下创建一个名为StreamingAssets目录,然后将一段视频拖到这个目录下。由于刚刚创建了一个cube,现在不需要用,删除掉。创建一个脚本,在Start方法中加入代码播放视频:
Handheld.PlayFullScreenMovie("StarWars.mp4",Color.black);
回到unity3d,将脚本拖到camera上,发布成移动设备对应的安装包,真机测试。
注意,这个在pc上是无法看到运行结果的,只有发布真机才会有效。另外,貌似安卓(android)需要API14以上,IOS上未测试。
附――可能需要的软件:
视频格式转化和截减工具:格式工厂
视频格式支持测试和播放工具:QuickTime