• 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);

        }

  • 相关阅读:
    c# 深拷贝与浅拷贝
    SQLServer性能优化 .net开发菜鸟总结
    Ajax自定义无刷新控件实现
    APScheduler库的详细用法
    catkin在centos中的安装
    第五次任务实现与项目总结第六组
    Javascript教程:获取当前地址栏url
    窗口处理问题
    HTML中area标签
    Asp.net中Frameset的使用小结
  • 原文地址:https://www.cnblogs.com/lfy007/p/4802612.html
Copyright © 2020-2023  润新知