unityios开发--加载视频以及加载完成之后自动跳转 .
在做游戏或者是虚拟漫游一般都会用到在开始的时候加载一段视频,这个视频可能一个介绍整个游戏或者是整个项目的。在加载完了之后自动的跳转到主画面或一个场景,在前在网上百度了一下找到的大部分都是win的好不容易找到了ios的。
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();
- }
- }
- }
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);
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();
- }
- }
- }
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中播放视频简单吧? 哇咔咔~
补充:2012年10月21日 经测试以上的方式在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);
- }
- }
- }
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
转自 http://www.xuanyusong.com/archives/1019
如果你感觉
Handheld.PlayFullScreenMovie("Style_hd.mp4",Color.black, FullScreenMovieControlMode.Full);
iPhoneUtils.PlayMovie("Style_hd.mp4", Color.black, iPhoneMovieControlMode.Hidden,iPhoneMovieScalingMode.AspectFit);
来源http://game.ceeger.com/Script/iPhoneUtils/iPhoneUtils.PlayMovie.html
跳转就很简单了在执行完这个语句之后在添加一句
Application.LoadLevelAsync(1);
function Start () {
Handheld.PlayFullScreenMovie("Style_hd.mp4",Color.black, FullScreenMovieControlMode.Full);
//Handheld.PlayFullScreenMovie("Style_hd.mp4", Color.black, FullScreenMovieControlMode.Hidden);
//iPhoneUtils.PlayMovie("Style_hd.mp4", Color.black, iPhoneMovieControlMode.Hidden,iPhoneMovieScalingMode.AspectFit);
Application.LoadLevelAsync(1);
}
转载于:https://www.cnblogs.com/xiao-wei-wei/archive/2013/03/30/2989967.html
unityios开发--加载视频以及加载完成之后自动跳转 .相关推荐
- php怎么给视频加水印,视频怎么加水印 添加文字水印和图片水印 给视频加水印的软件...
昨天由于台风"妮妲"来了深圳,所以在家休息了一天,而且势汹汹的台风"妮妲"于2日03时35分在深圳市大鹏半岛登陆,登陆时风力达到14级,成为近年来正面登陆珠江三 ...
- OpenCV中使用类VideoCapture加载视频和打开摄像头
先直接上示例代码,然后对代码进行讲解. #!/usr/bin/env python # -*- coding: utf-8 -*- # 图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 248 ...
- qq互动视频页面加载失败_互动案例技术分析(2)
这是该系列文章的第2篇,我们仍然会选择三个互动营销案例,从技术角度加以分析.这个系列并非为程序员而写,因为这些内容就是我们的日常工作.我们的目标是让更多的朋友能够了解技术可以实现的效果,以及更重要的- ...
- libGDX跨平台游戏开发框架入门:开发一个小游戏之加载资源
目录 前言 加载资源 libGDX资源目录说明 配置各个平台启动器 desktop模块启动器设置 Android模块启动器设置 加速度计和指南针 html模块启动器设置 编写加载资产代码 1. 加载图 ...
- moviepy音视频剪辑:音视频的加载和输出
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 在本地进行音视频处理时,首先要从视频文件 ...
- moviepy音视频剪辑:使用VideoFileClip、AudioFileClip和write_videofile、write_audiofile进行音视频的加载和输出
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 在本地进行音视频处理时,首先要从视频文件 ...
- Android之MediaPlayer加载视频慢
问题:Android系统播放器MediaPlayer播放网络视频,加载慢...缓冲慢... 结论:视频元数据位置不对 简单解释就是,大部分的视频格式是MP4,MP4格式的视频是由一个个Box组成的.这 ...
- 有效解决微信小程序加载视频[渲染层网络层错误] Failed to load media
问题1,小程序的视频一般都是放在网络上的,没谁能把视频放本地把,所以在小程序视频插件在加载视频的时候,就会出现如下错误:[渲染层网络层错误] Failed to load media wxml加载视频 ...
- 又有坑是吧——MediaPlayer加载视频为什么这么慢
"今天又是充满希望的一天" 背景 最近在做一个视频播放的需求,因为比较简单,只需要实现基本的loading,播放,暂停等功能,所以就用Android系统的播放器MediaPlaye ...
最新文章
- java中包的_Java中的包
- TZOJ--3560: Ordered Fractions (枚举)
- 2.1.2 骑自行车的最短时间
- 计算机网络信息安全的含义,计算机网络信息安全内涵及其重要性
- tf keras SimpleRNN源码解析
- JQuery常用选择器总结
- 【算法分析与设计】快速幂算法与快速幂取模算法
- Qt工作笔记-Qt文档阅读笔记-qualifiedName()的官方解析及XML使用名称空间
- docker pull 下载一半_Docker三个重要的基本操作,镜像,容量,仓库
- linux下几个压缩命令
- vim 编辑器基本使用
- vista中如何解决金山词霸延时问题
- 软件岗位--CTO、技术VP、技术总监、首席架构师
- uniapp之安卓文件操作插件
- 谷歌翻译失效,解决网页谷歌翻译的问题-只能解决页面翻译
- 物联网关键之传感器技术
- 趣头条“瘦身”减负?
- 7-42 打印倒直角三角形图案 (15 分)
- Python 从 Excel 读取链接下载文件
- Splay树各操作--数组
热门文章
- 将字符串中的字符按Z字形排列,按行输出
- ACM-ICPC 2018 焦作赛区网络预赛 H题 String and Times(SAM)
- 几种常用的数字滤波器
- [置顶] 混响音效
- BeanUtil使用例子:解析并转化HttpServletRequest到Bean的全面测试
- 基于Docker搭建Gitlab代码存储
- 10、jeecg 默认为空的字段值是如何被填充的?
- /lib/libcrypto.so“ not found,is 32-bit instead of 64-bit
- android RecyclerView EditText 取消自动聚焦
- WIN2003 X64 系统上安装sql server 2000 的步骤