千家信息网

Unity3D如何播放游戏视频

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要介绍了Unity3D如何播放游戏视频,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Unity3D中播放游戏视频的方式有3种
千家信息网最后更新 2025年02月04日Unity3D如何播放游戏视频

这篇文章主要介绍了Unity3D如何播放游戏视频,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Unity3D中播放游戏视频的方式有3种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上。第二种是在GUI层面上播放视频。播放视频其实和贴图非常相像,因为播放视频用到的MovieTexture属于贴图Texture的子类,第三种在手机上播放Handheld.PlayFullScreenMovie。那么本章我们就好好学习一下Unity中播放视频的这3种方式。

Unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf(u3dnotes.com建议用MP4,否则可能无法正常播放)。只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象。如下图所示,MOMO将default_video.mp4拖拽入Project视图中,如果视频中含有音频的话会对应生成audio文件,因为我的视频没有音频所以没有生成 audio文件。接着在Hierarchy视图中创建一个Plane对象视频将在它之上播放,Directional light世界定向光用于照亮整个游戏场景,最后Main Camera对象将直直的照射在Plane对象。

使用对象拖拽的形式为Mov Texture对象赋值,那么在脚本中就能直接使用它了,我们看看Test.cs脚本。

Test.cs

using UnityEngine;using System.Collections; public class Test: MonoBehaviour{         //电影纹理        public MovieTexture movTexture;         void Start()        {                //设置当前对象的主纹理为电影纹理                renderer.material.mainTexture = movTexture;                //设置电影纹理播放模式为循环                movTexture.loop = true;        }         void OnGUI()        {                if(GUILayout.Button("播放/继续"))                {                        //播放/继续播放视频                        if(!movTexture.isPlaying)                        {                                movTexture.Play();                        }                 }                 if(GUILayout.Button("暂停播放"))                {                        //暂停播放                        movTexture.Pause();                }                 if(GUILayout.Button("停止播放"))                {                        //停止播放                        movTexture.Stop();                }        }}

如下图所示,点击按钮后轻松的实现播放、暂停、停止操作。默认视频大小大家可在编辑器直接缩放Plane对象平面,而如果需要在游戏运行中动态的缩放平面使用方法:

transform.localScale = new Vector(1,1,1);

模型默认缩放系数为1,这里可以调节平面X、Y、Z三个方向的缩放系数,平面的大小会随之改变,对应视频的大小也会随之改变。

第二种播放视频的方式基于GUI。大家可以把刚刚创建的Plane对象以及世界定向光删除,直接将脚本绑定在摄像机对象中即可,接着我们简单的修改一下刚刚的游戏脚本。

Test.cs

using UnityEngine;using System.Collections; public class Test: MonoBehaviour{         //电影纹理        public MovieTexture movTexture;         void Start()        {                //设置电影纹理播放模式为循环                movTexture.loop = true;        }         void OnGUI()        {                //绘制电影纹理                GUI.DrawTexture (new Rect (0,0, Screen.width, Screen.height),movTexture,ScaleMode.StretchToFill);                   if(GUILayout.Button("播放/继续"))                {                        //播放/继续播放视频                        if(!movTexture.isPlaying)                        {                                movTexture.Play();                        }                 }                 if(GUILayout.Button("暂停播放"))                {                        //暂停播放                        movTexture.Pause();                }                 if(GUILayout.Button("停止播放"))                {                        //停止播放                        movTexture.Stop();                }        } }

在GUI中播放视频的原理是直接通过GUI调用DrawTexture方法,这里和绘制贴图很想了吧嘿嘿~ 目前播放视频的大小是屏幕的宽高,如果想动态的修改视频的宽或高直接修改new Rect() 视频显示区域即可,如下图所示,视频已经满满的填充在整个GUI中啦。怎么样Unity中播放视频简单吧? 哇咔咔~

移动平台上播放视频

经测试以上的方式在IOS和Android设备中是无法播放视频的,在移动设备上我们需要使用另外一种方式来播放。

using UnityEngine;using System.Collections; public class Test : MonoBehaviour {         void OnGUI()        {            if (GUI.Button (new Rect (20,10,200,50), "PLAY ControlMode.CancelOnTouch"))                 {                     Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);                }                 if (GUI.Button (new Rect (20,90,200,25), "PLAY ControlMode.Full"))                 {                     Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Full);                }                 if (GUI.Button (new Rect (20,170,200,25), "PLAY ControlMode.Hidden"))                 {                Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Hidden);                   }                 if (GUI.Button (new Rect (20,250,200,25), "PLAY ControlMode.Minimal"))                 {                     Handheld.PlayFullScreenMovie("test.mp4", Color.black, FullScreenMovieControlMode.Minimal);                }         } }

1.视频播放时触摸屏幕视频关闭

2.视频播放时弹出IOS高级控件,控制视频暂停播放 全屏等等。

3.视频播放时无法停止,当其播放完一次后自动关闭

4.视频播放时弹出IOS高级控件,可控制播放进度。

注意:将视频文件放置在Assets/StreamingAssets/路径下,经测试.MP4可用。 在IOS和Android上流畅播放游戏视频。

工程下载: http://vdisk.weibo.com/s/gb4Lx

视频加速播放(只适用于PC)

今天有朋友问我,怎么能让视频加快播放,我也学了一下,不果老外们都说这是一个BUG呵呵。

脚本绑定在摄像机对象上,并且要给摄像机添加AudioSource组件。

代码比较简单我就不注释了。

using UnityEngine;using System.Collections; public class NewBehaviourScript : MonoBehaviour {        public MovieTexture mov;         void Start()        {                audio.clip = mov.audioClip;                audio.Play();                mov.Play();         }        void OnGUI()        {                if(GUI.Button(new Rect ( 310,0,100,50),"2倍速播放"))                {                        audio.pitch = 2f;                }                 if(GUI.Button(new Rect ( 410,0,100,50),"1倍速播放"))                {                        audio.pitch = 1f;                }                 GUI.DrawTexture(new Rect(0,0,300,300),mov);        }}

感谢你能够认真阅读完这篇文章,希望小编分享的"Unity3D如何播放游戏视频"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

视频 对象 纹理 电影 方式 脚本 游戏视频 大小 摄像机 文件 篇文章 摄像 世界 平面 视图 贴图 生成 高级 动态 屏幕 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 不是软件开发期所包含的内容 中南大学数据库怎么用 创造与魔法如何建造个人服务器 基于数据库的编程软件开发 sq数据库如何从电脑中删除 广播电视局网络安全的重要性 数据转发服务器 获取oracle数据库系统时间 网络安全微课作品海报 陕西全通网络技术 找不到内网id服务器ip地址 网络技术路由表 高一网络安全宣传班会 宁波海购互联网科技有限公司 计算机网络技术导论思维导图 数据库2008r2安装提示错误 供销社 安全风险数据库 数据库设计博客系统ppt 冒险岛766数据库技术 软件开发工程师新人培训 长春智能网络技术服务 网络安全安全教育教案 日志 软件开发面试什么 神舟笔记本软件开发 基于数据库的编程软件开发 南京泰达威网络技术有限公司 数据库员工工资管理系统索引 数据库技术怎么停止运行 现在软件开发有前途吗 我的世界服务器怎么添加手机版
0