在做游戏或者是虚拟漫游一般都会用到在开始的时候加载一段视频,这个视频可能一个介绍整个游戏或者是整个项目的。在加载完了之后自动的跳转到主画面或一个场景,在前在网上百度了一下找到的大部分都是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();
}
}
}
如下图所示,点击按钮后轻松的实现播放、暂停、停止操作。默认视频大小大家可在编辑器直接缩放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中播放视频简单吧? 哇咔咔~
补充: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);
}
}
}
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);
}
分享到:
相关推荐
3. 异步加载策略:合理配置动态import()的懒加载策略,如设置加载超时时间,以及加载失败的重试机制等。 4. 拆分过大组件:如果某个组件过大,可以考虑将其拆分成更小的子组件,并单独进行懒加载。 5. 使用 prefetch...
在iOS开发中,为UITableView的UITableViewCell添加视频播放功能是一个常见的需求,这通常涉及到多媒体处理和用户界面设计。在这个“ios-tabletableviewcell上加载视频播放器.zip”项目中,开发者提供了一个解决方案...
### iOS开发-动态库加载(实时模块更新) #### 动态库与静态库的基本概念 在探讨iOS开发中的动态库加载及其应用场景之前,我们首先需要理解动态库与静态库的基本概念及其区别。这两种类型的库主要根据其加载时机的...
js实现自动跳转,大家多下哈, 资源难得,几秒种跳转只需要修改后面的参数就行了!
自动跳转则是指加载完成后,页面无需用户手动操作即能自动转向下一个页面。这种功能在优化用户体验、节省用户时间方面起到了重要作用。下面将详细探讨加载页的设计原则、实现方式以及自动跳转的技术实现。 1. **...
本教程将专注于如何使用一行代码实现一个基本的视频播放器,它能够加载网络视频、支持全屏模式以及快进功能。我们将主要关注以下几个核心知识点: 1. **AVFoundation框架**:在iOS开发中,AVFoundation框架是处理...
控制台程序如何模拟网页登陆,并且等待网页加载完成做相应处理再获取跳转页面的内容
在网页设计和开发中,"三秒后自动跳转页面"是一种常见的技术手段,用于在特定条件下引导用户从当前页面转移到另一个页面。这种技术在多种场景下被广泛使用,例如错误处理、信息提示或者更新页面内容。下面我们将深入...
在网页设计中,页面跳转加载效果是一种提升用户体验的重要手段。它不仅能让用户在等待页面内容加载时有所感知,还能通过动态的视觉呈现增加互动性和趣味性。本篇将深入探讨页面加载效果的相关知识点,包括原理、实现...
### Delphi 学习总结——动态加载TreeView信息 在Delphi开发中,`TreeView`控件常被用于显示具有层次结构的数据,例如文件系统、组织结构等。动态加载`TreeView`信息是提高程序性能和用户体验的重要手段之一。下面...
404页面加载动画,5秒后自动跳转到首页。js、css文件一起打包好的,下载后解压压缩包,打开404.html预览效果,用编辑器修改要跳转的网站即可。 <meta http-equiv="refresh" content="5;url=...
在网页开发中,分页处理是一项非常常见的功能,特别是在数据量较大的情况下,为了提高用户体验,我们需要将大量数据分块展示,而不是一次性加载所有内容。"关于分页处理--跳转到第N页"这个主题主要涉及到如何实现...
以下是一个简单的示例,展示如何在页面跳转前显示loading,并在页面加载完成后关闭: ```html <!DOCTYPE html> <meta charset="UTF-8"> <title>jQuery页面跳转loading加载 #loading { display: none; /* ...
加载完成后,移除它。 3. **全屏等待效果**: 全屏等待页通常在页面整体加载或页面之间跳转时使用,以防止用户在内容完全呈现之前进行交互。这通常是一个覆盖整个屏幕的半透明层,上面有一个加载动画。JavaScript...
在网页开发中,有时我们需要实现一个功能,即在一定时间后自动将用户重定向到另一个页面,这通常被称为页面自动跳转。这个功能在很多场景下都有应用,比如临时维护通知、登录验证失败后的提示、或者是成功操作后的...
在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部嵌入一个网页浏览器,使得用户可以在不离开应用的情况下浏览网页内容。本压缩包"安卓浏览器WebViewJSHTML5相关-androidwebview加载本地...
本文将深入探讨如何使用易语言在内存中加载并运行EXE程序,这是程序开发中的一个重要技巧,特别是在动态执行代码或者进行调试时非常有用。 首先,我们要理解内存加载运行的概念。在计算机系统中,当一个可执行文件...
我们主要关注的是网页设计中的自动重定向机制,这一机制广泛应用于各种场景,包括但不限于用户登录后的默认页面跳转、错误页面的友好性处理、以及某些特定操作完成后的结果反馈等。通过深入分析给定文件的部分内容,...
具体来说,是在画面加载完成后,触发一个计时过程。 - 在开机画面的属性中,选择“事件”选项卡下的“已加载”事件。 - 为该事件配置“模拟变量”功能,将变量`BitTime`设置为输入输出变量。这意味着,当开机画面...