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

          Unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。只需将对应的视频文件拖拽入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对象平面,而如果需要在游戏运行中动态的缩放平面使用方法:

1 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中啦。

移动平台上播放视频 

经测试以上的方式在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上流畅播放游戏视频。

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

脚本绑定在摄像机对象上,并且要给摄像机添加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);}
}

转载于:https://www.cnblogs.com/yangmingyu/p/6928211.html

Unity3D两种方式播放视频相关推荐

  1. Unity3D研究院之两种方式播放游戏视频

    今天突然想起之前做过的一个AR项目,更换识别图播放不同的视频.就想了解一下unity3d支持哪些音视频格式,就看到了雨凇大大这篇文章,总结得很详细,我就不上我的代码献丑了,把雨松大大的博客分享给大家吧 ...

  2. 如何让BERT拥有视觉感知能力?两种方式将视频信息注入BERT

    一只小狐狸带你解锁NLP/ML/DL秘籍 老板老板,听说BERT是个瞎子 此话怎讲? 它能理解语言,但是理解不了小夕的自拍! video-BERT了解一下 喵喵喵? AI的三大核心板块(CV/Spee ...

  3. Android 三种方式播放视频和百度直播

    一.Android视频播放这里做个简单介绍,视频播放主要有三种方式:安卓7.0以上兼容 (获取本地应用assets raw文件位置:"file:///android_asset/文件名&qu ...

  4. Unity3D教程:播放视频的两种方式

    Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常相像, ...

  5. unity3d两种播放视频的方式

    在Unity3D中播放游戏视频的方式有两种.第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上.第二种是在GUI层面上播放视频.播放视频其实和贴图非常相像 ...

  6. 工作272:上传部分代码优化之两种上传视频的方式

    两种预览视频的方式 <!--<div style="width: 500px;height: 400px" align="center">&l ...

  7. 移动视频终端接入南瑞统一视频平台的两种方式

    移动视频终端接入南瑞统一视频平台的两种方式 发布时间: 2021-08-26 14:34:01 4G/5G图传-移动视频终端,包括4G/5G记录仪.智能安全帽.智能手电.AI布控球.无人机4G/5G回 ...

  8. C语言播放音乐的两种方式

    来源:微信公众号「编程学习基地」 文章目录 播放音乐的两种格式 播放音乐的两种格式 wav格式的音乐播放.mp3格式的音乐播放 1️⃣首先添加播放音乐的头文件 #include <windows ...

  9. html实现ipad投屏到显示器,iPad投屏的两种方式

    iPad投屏至少有两种方式,一种是AirPlay,这种方式相当于笔记本连接投影仪的方式,以投影仪或电视作为第二显示器,具体操作就是从iPad底部向上划,然后找AirPlay,如果此时显示设备,如智能投 ...

最新文章

  1. web前端培训分享:面向对象中类和对象的定义是什么?
  2. java与fabric区块链--fabric-ca-server 注册---(3)
  3. gradle工程环境搭建---从SVN上导出项目源码
  4. java网格画线_java 网格输出的类--练习 stream
  5. 【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)
  6. 数列分块入门 6(LibreOj-6282)
  7. 用IDEA开发一个简单的Spring MVC的Hello World程序,表单程序
  8. 韩山师范计算机应用技术,二、计算机应用与技术系学生在韩山师范学院“挑战杯”的-….pdf...
  9. 【Tensorflow深度学习】Tensorflow2.0GPU版极简安装
  10. MTK camera驱动浅析(1)
  11. winhex 15.6 和 HexWorkshop 6.01注册机
  12. 计算机主机号截图,电脑如何截图?截图三种方法推荐
  13. 使用七牛云存储图片案例
  14. ONLYOFFICE文档转换开发技术
  15. HotPower超级CRC计算器与第三方CRC计算器名词解释与对照及操作
  16. 生物素标记甾体化合物/多杀菌素探针分子/壳聚糖/聚乙二醇偶连基团为华生物提供
  17. dedecms图片绝对路径(附件绑定域名)的设置方法
  18. python的random()函数用法_python中的随机函数random的用法示例
  19. Win PE CD-ROM 制作简介(系统修复光盘)
  20. 全国大学生数学建模竞赛

热门文章

  1. MDS 9148 配置
  2. iOS 处理键盘遮挡TextField、TextView问题
  3. 心电信号的PQRST模拟matlab代码(转载+自己调研汇总)
  4. springboot与springcloud的关系(转载)
  5. TypeError: type str doesn't define __round__ method
  6. dependencies.dependency.version' for org.apache.commons:commons-math3:jar is missing
  7. ubuntu下sublime如何一次只打開一個文件
  8. This application failed to start because it could not find or load the Qt platform plugin xcb in
  9. Error creating bean with name ‘cn.cyjt.shoot.service.UserServiceTests‘: Unsatisfied dependency expre
  10. java高校教师工作量管理系统_基于ssh/bs/java/asp.net/php/web/安卓的高校教师工作量管理系统...