Unity3D基础学习 利用NGUI的Texture播放视频

利用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);

    }

原文地址:https://www.cnblogs.com/YDoubleC/p/6203743.html