纳金网

标题: Unity3d基础教程11—视频元素(MovieTexture) [打印本页]

作者: paopao    时间: 2013-1-21 13:09
标题: Unity3d基础教程11—视频元素(MovieTexture)
在unity3d中,我们需要MovieTexture(电影纹理)来添加游戏视频。MovieTexture对象继承自纹理对象,所以其用法与纹理基本一样。(注:使用MovieTexture是,要确保计算机已经正确安装了quicktime player,还有就是只有pro的才支持MovieTexture)Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上。第二种是在GUI层面上播放视频。我们先来看第一种方式:打开unity3d,新建一个工程,在hierarchy视图中新建一个Plane。调整Plane与摄像机的位置,如图即可:然后将一个视频文件拖入到Project视图中,系统会自动自动生成对应的电影纹理。又侧位视频文件的属性面版。创建一个c#脚本,命名为movie1。编写代码如下,public class movie1 : MonoBehaviour {          //定义一个电影纹理          public MovieTexture MOV1;          // Use this for initialization          void Start () {                   //设置主纹理为电影纹理                   renderer.material.mainTexture=MOV1;                   MOV1.Play();                    }                    // Update is called once per frame          void Update () {                    }}将代码拖放到我们新建的面片上:然后将我们的视频文件拖放到我们的脚本变量MOV1上:运行游戏。发现视频开始播放。如果我们导入视频是带有声音的,会发现声音并没有播放,下面就看下怎么把声音加上呢。首先我们要给我们的物体添加一个音频组件,下面有两种方法来的到这个声音,1:将视屏文件下的音频文件拖入将Play On Awake勾掉。然后打开刚才的脚本,在Start()函数中加入以下代码。audio.Play();方法2:用脚本读取音频文件,音频组件添加完成后。打开脚本文件。在Start()函数中加入以下代码。:audio.clip=MOV1.audioClip;audio.Play();运行游戏,视频和音频也会同步播放。我们现在可以播放了,下面看下怎么暂停和停止视频播放。在脚本movie1中添加如下代码void OnGUI(){                   if(GUILayout.Button("play"))                   {                               if(!MOV1.isPlaying)                            {                                       //播放音频和视频                                     MOV1.Play();                           audio.Play();                            }                   }                   if(GUILayout.Button("pause"))                   {                            //暂停音频和视频                            MOV1.Pause();                       audio.Pause();                   }                   if(GUILayout.Button("stop"))                   {                            //停止音频和视频                            MOV1.Stop();                       audio.Stop();                   }                 }运行游戏。得到如图所示画面。点击play、pause、stop按钮,视频开始播放,暂停,和停止。下面我们来看第二种方法,怎么在中添加电影纹理。首先将plane的勾取消,这样plane将不在被渲染,代码也不在执行。这样做是为了不和我们下面做的效果重合。然后新建一个c#脚本,命名为movGUI。然后在movGUI脚本中编写如下代码:public class movGUI : MonoBehaviour {      public MovieTexture MOV1;     void Start ()      {              //设置纹理循环播放              audio.clip=MOV1.audioClip;              MOV1.loop=***e;     }     void OnGUI()     {              //绘制电影纹理              GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),MOV1,ScaleMode.StretchToFill);              if(GUILayout.Button("play"))              {                          if(!MOV1.isPlaying)                       {                                   //播放音频和视频                                 MOV1.Play();                      audio.Play();                       }              }              if(GUILayout.Button("pause"))              {                       //暂停音频和视频                       MOV1.Pause();                  audio.Pause();              }              if(GUILayout.Button("stop"))              {                       //停止音频和视频                       MOV1.Stop();                  audio.Stop();              }             }     }然后新建一个GameObject,将脚本添加到GameObject上面。在将视屏文件拖到变量MOV1上面。最后不要忘了给GameObject游戏物体添加一个音频组件,不然回去报错。都添加完成后,运行游戏。点击play、pause、stop按钮,视频开始播放,暂停,和停止。
作者: 雅雅    时间: 2013-1-22 02:26
本帖最后由 艾西格亚 于 2013-5-11 18:35 编辑

不错,刚好需要这个教程

作者: 狂风大尉    时间: 2013-1-29 17:17
希望更多的朋友分享制作经验


作者: 雅雅    时间: 2013-1-29 17:41
本帖最后由 艾西格亚 于 2013-5-11 18:35 编辑

试了一下,有的movie导入会有问题,不知是不是格式有影响

作者: atunet    时间: 2013-1-30 18:29
很好的教程,多谢楼主!学习学习!

作者: libufan    时间: 2014-7-13 20:04
谢谢楼主分享经验,mobile上总是不正常显示
作者: HIDEOKOJIMA    时间: 2014-7-13 21:26
THanks for sharing this one!
作者: yangjianhui6    时间: 2014-7-16 16:01
需要这个教程
作者: maya130    时间: 2015-1-5 14:38
只有pro是什么意思啊?
作者: maya130    时间: 2015-1-5 14:38
只有pro是什么意思?





欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5