1使用NGUI播放视频

使用movietexture,但是里面只有play,stop,pause  3个方法

Unity3D 原生就支持视频播放的,不是UITexture而是用MovieTexture。
MovieTexture.Playe(); 播放
MovieTexture.Pause();暂停
MovieTexture.Stop();停止

MovieTexture.loop = true;意思是循环播放,false意思是不循环播放

 

想把Unity中的3d渲染到你的texture上的话  使用Render Texture;   如果是直接播放视频文件 

就使用movie texture(仅PC端支持)  手机iOS、Android的话 使用Mobile Movie Texture插件就可以;  

还有就是Tween动画

 

http://blog.csdn.net/g__dragon/article/details/17371935 

这个是下面内容的连接,经过测试是正确的,只不过可以不用QuickTime,只要有OGG,ogv格式的视频就可以。

利用NGUI播放视频,首先你得导入你的视频

你的电脑中必须安装QuickTime软件,没有,去下一个,如果是Windows系统,安装完之后重启。

接下来转换你的视频格式,如果你的视频在QuickTime里无法播放,那么也无法在Unity里播放,把你的视频转为.MOV格式(如果你的视频无法在QuickTime里播放的话)。

当然,如果你不想在导入视频的时候等待Unity的转换,你可以事先把视频转换成OGV或者OGG格式的,因为这两种格式Unity默认是支持的,导入时无需转换,直接可以播放。

虽然网上说QuickTime支持的视频类型很多,但是实际中发现,同样的格式有的就能播放,有的就不能播放。所以在导入Unity之前先放到QuickTime里试试。

打入后会这样一个视频文件,一个声音文件(如果你的视频有声音的话)。

接下俩见一个NGUI的Texture控件,把视频拖入Texture属性中,再把1.audio拖到Texture控件下。如图。

再添加三个Button和一个slider分别控制播放,暂停,停止,以及播放进度。再在每个Button上添加ButtonMessage脚本,Target为Texture,FuntionName为moviePlaneButtons,用来给texture传递播放状态信息。

接下来就是播放代码。

  //影片纹理,必须附加到游戏物体上才能播放(指定到工程视图内要播放的音频) 
    public MovieTexture _MoiveTexture;
    float ftimeNow = 1;//当前播放时间
    public UISlider _UISlider;//用来显示播放进度的进度条
    string strPlayState = "null";//播放状态

    void Start()
    {
        
        _MoiveTexture.loop = true;
        //HideMoviePlane();
    }


    void Update()
    {
        TimeControl();
    }

  

    ///控制影片和影片声音 
    void moviePlaneButtons(GameObject obj)
    {
        if (obj.name == "Btn-Play")
        {
            if (!_MoiveTexture.isPlaying)
            {
                //播放影片 
                _MoiveTexture.Play();
                //播放物体上的声音(影片的子物体) 
                transform.audio.Play();
                strPlayState = "Play";
            }
        }

        if (obj.name == "Btn-Pause")
        {
            if (_MoiveTexture.isPlaying)
            {
                //暂停 再play就是继续  
                _MoiveTexture.Pause();
                transform.audio.Pause();
                strPlayState = "Pause";
            }
        }
        if (obj.name == "Btn-Stop")
        {
            if (_MoiveTexture.isPlaying)
            {
                //结束 再play就是重新开始 
                _MoiveTexture.Stop();
                transform.audio.Stop();
                strPlayState = "Stop";
            }
        }
    }

    /// <summary>
    /// 显示当前播放时间
    /// </summary>
    void TimeControl()
    {
        if (strPlayState == "Play")
        {
            ftimeNow = ftimeNow + 1 * Time.deltaTime;
        }
        else if (strPlayState == "Pause")
        { }
        else if (strPlayState == "Stop")
        {
            ftimeNow = 0f;
        }
        _UISlider.value = (ftimeNow / _MoiveTexture.duration);

    }

posted @ 2015-09-12 10:14  liufeiyue  阅读(864)  评论(0编辑  收藏  举报