zoukankan      html  css  js  c++  java
  • 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);

        }

  • 相关阅读:
    [Typescript] Augmenting Modules with Declarations
    [Postgres] On conflict Do Something Clause in Postgres
    [React] Debug Custom React Hooks With useDebugValue
    为什么不推荐通过Executors直接创建线程池
    JAVA线程池使用注意事项
    Java线程池使用的注意事项
    分布式事务(六)总结提高
    分布式事务(五)源码详解
    分布式事务(三)mysql对XA协议的支持
    分布式事务(二)Java事务API(JTA)规范
  • 原文地址:https://www.cnblogs.com/YDoubleC/p/6203743.html
Copyright © 2011-2022 走看看