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

}

Unity3D基础学习 利用NGUI的Texture播放视频的更多相关文章

  1. Unity3D基础学习 NGUI自带Tooltip制作提示文字

    简介 NGUI自带的的例子Character中含有一个Tooltip,可以鼠标悬浮到某对象时显示提示文字.非常方便. 创建UITooltip 首先你需要在场景NGUi相机下建立一个空物体我把它命名为T ...

  2. Unity3D基础学习 NGUI Example 7-Scroll View(Panel)制作固定包裹栏,点击传递参数显示物体

    最终效果如下: 实现ScrollView主要是NGUI的三个脚本"UIDraggable Panel","UIGrid","UIDrag Panel ...

  3. Unity3D基础学习 NGUI之Example 13 - Tabs简要概述

    首先建一个2D相机,在Anchor下新建一个子物体,添加WindowDrag Tilt脚本,用作拖动窗口 然后新建一个Panel,包含两个content,两个Tab,设置两个Content用来显示切换 ...

  4. Unity3D基础学习之AssetBundle 资源包创建与加载

    前几天做了AssentBundle的例子,遇到了问题,在论坛上问了三天都没人解答,最后在一个朋友的帮助下解决了.下面介绍AssentBundle. AssetBundles让你通过WWW类流式加载额外 ...

  5. Unity3D基础学习 加载场景时隐藏物体,点击显示时显示物体

    隐藏物体有两种方法,一是设置Meshrender为False,即不渲染物体. 二是设置物体为False,禁用物体,我使用的第二种. 当场景中需要隐藏的物体很多时,我们可以添加一个层来表示需要隐藏的物体 ...

  6. unity3D基础学习 通过判断鼠标点击的是否是目标物体,物体旋转,滑动滚轮缩放拉近视角

    贴代码: 摄像机的拉近视角代码: public Transform target;     public float minFov = 15f;     public float maxFov = 7 ...

  7. 【wpf基础】wpf MediaElement全屏播放视频功能

    最近在研究如何将视频全屏播放,一开始思路A:弹窗将MediaElement对象add到一个新的全屏窗体,报错 指定的元素已经是另一个元素的逻辑子元素.请先将其断开连接. 后续转换思路B:将本窗体其他控 ...

  8. iOS开发小技巧--利用苹果官方API播放视频(方法已经过时,了解一下)

  9. 跟我从零基础学习Unity3D开发--NGUI入门基础

    英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...

随机推荐

  1. 无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证

    ----注意:以管理员身份运行VS C#中ASP.NET Web应用程序编译时的错误:无法在web服务器上启动调试.调试失败,因为没有启用集成windows身份验证. 解决:打开IIS,在IIS里查看 ...

  2. 用ASP.net判断上传文件类型的三种方法

    一. 安全性比较低,把文本文件1.txt改成1.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法. Boolean fileOk = false;           ...

  3. Java study 1:The note of studying Socket which based UDP

    UDP concept: UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参 ...

  4. JavaScript_ECMA5数组新特性

    var arr = [ 1, 2, 3, 4, 5, 4, 3, 2, 1 ]; 新加位置的方法: indexOf lastIndexOf1.1个参数的时候表示传值 返回索引位置(index从0开始) ...

  5. Hibernate 环境搭建

    Hibernate 工作流程 1.创建工程并导包 2.在src根目录下创建配置文件:hibernate.cfg.xml(也可以创建在src其他文件夹下,但是在后面的配置中,需要指明路径) <?x ...

  6. 使用C++11 实现的线程池

    最近打算做一个服务器端程序,每来一个客户端请求新开一个线程进行处理.在网上查了一些资料后,准备使用线程池来做这个东西.使用C++11新的库处理想线程问题比以前简单了许多,在网上找到一份线程池的实现,h ...

  7. flvplayer.swf flv视频播放器使用方法

    今天由于网页上要加入一个视频文件,就研究了一下flv视频播放器flvplayer.swf      :   关于SewisePlayer  插件 演示例子链接   一.直接在html文件中加载: &l ...

  8. socket函数

    为了执行网络IO,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型 int socket(int family,int type,int protocol); 其中,famil ...

  9. mongodb 教程三

    mongodb 实际上是保存json的数据的结构.当查询 是修改时 key 是可以用''保存. mongodb  插入语句 db.weixin.insert({name:'zhangfeng',age ...

  10. 多台web服务器之间共享session

    常见的几种方法如下: 1. 写客户端Cookie的方式 当用户登陆成功以后,把网站域名.用户名.密码.token.session有效时间全部采用cookie的形式写入到客户端的cookie里面,如果用 ...