UDN
Search public documentation:

FullScreenMovieApple_iOSCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3主页 > 移动设备主页 >iOS中的全屏视频

iOS中的全屏视频


概述


iOS中内置了全屏视频播放功能。我们利用这个API来处理全屏视频(通常用于引擎加载过程)。UE3中关于全屏视频的某些平台独立的信息,可以在全屏视频中找到。您所需要的针对iOS的信息(比如,视频格式)可以在下面找到。

另外,您可以使用静态图像来进行加载而不是使用视频(或者二者的组合物)。

内容创建


该本分介绍了视频和图像的创建及命名规则。

视频

iOS支持多种视频格式,但是这次我们假设所有的视频都是M4V格式,扩展名是.m4v。

视频尺寸几乎可以是任何大小(播放时将会放大视频来适应屏幕,维持视频的高宽比,将其他区域填充为黑色)。尺寸为480x320(对于风景应用程序)或尺寸320x480(对于肖像)是非常标准的,因为那是最小形式屏幕的尺寸。在iPad上进行放大一般看上去效果会很好。

图片

如果代码不能播放视频(或者因为视频不存在,或者因为代码运行所在的系统版本是3.1.3或之前的版本),那么它将尝试找到和指定的视频具有相同名称的.png文件。

和视频一样,这个图片的尺寸可以是任意大小,但是一般尺寸要和您目标屏幕的分辨率相匹配。实际上具有3个相同名称的不同图片是可以的,这时将根据游戏运行的设备来进行选择。假设视频名称是Loading,那么您可以指定的三个文件是:

  • IPadLoading.png - 如果应用程序在iPad上运行将选择这个图片。一般这个图片的尺寸是1024x768(或者对于肖像应用程序是768x1024)
  • [email protected] - 如果运行在具有 Retina Display的设备 (iPhone 4, 第四代iPod Touch)上,那么则选择这个图片。一般这个图片的尺寸是 960x640(或者对于肖像应用程序是 640x960)。
  • Loading.png - 这个图片可以用于任何情况 (或者如果上述图片不存在时使用)。一般这个图片的尺寸是480x320(或者对于肖像应用程序是320x480)。

另外,在屏幕左下角会显示一个小的白色的旋转器(UIActivityIndicatorView),提示您游戏正在执行一些处理(加载)。

说明


指定要播放的视频的有两种方法: 通过您的engine .ini文件的[FullScreenMovie]部分的StartupMovies和LoadingMovies行,或者通过在代码中调用各种MoviePlayer函数(请参照全屏视频获得关于这些函数及. .ini / config设置的更多信息)。iOS视频播放总是从闪存进行动态载入的,所以一般忽略AlwaysLoadedMovies设置和用于指定从哪里播放视频的MM_* 标志设置。唯一支持的标志是视频是否循环。

就像在StartupMovies中设置的最终视频是循环视频一样,如果您为最终“视频”显示一个图片,那么这个图片将一直显示直到游戏启动为止。注意,如果游戏在最终视频播放完成之前的2秒时启动,那么最终 视频/图片 甚至不会显示。

关于文件名大小写的重要信息

加载 视频/图像的iOS API是大小写敏感的,所以请确保您指定的视频名称(在.ini文件或代码中)和磁盘上的文件名称的大小写完全一致。另外,扩展名必须是.m4v或.png(比如,不能使.PNG)。

特殊的"Startup" 视频

因为OS将会在您的应用程序加载时显示Default.png,并且之后在引擎读取.ini文件之前还有一段时间,所以引擎一启动iOS视频播放器就将总是尝试播放一个名称为Startup的视频/图片。如果您没有名称为Startup的视频,那么在您的正常启动序列开始之前将会有短时间的停顿和黑屏现象。

因为我们播放视频很早,在命令行上指定 -nomovie参数或者在.ini文件中设置bForceNoMovies不会在iOS产生响应。

指定图片显示时间

因为图片中不包含任何时间信息,所以由.ini设置来控制图片显示时间的长度。您可以控制每个图片显示时间的长多、或者控制所有图片的总时间、或者就让它为默认值4秒。

这个时间是按照以下顺序决定的(先出现的设置优先级高):

  • 在engine .ini文件中的[FullScreenMovie]部分查找名称为SplashTime_XXX的键值,这里XXX是图片的名称。
  • 在[FullScreenMovie]部分查找名称为 "DefaultSplashTime"的键值。
  • 4秒

输入


如果加载了引擎并且视频位于SkippableMovies列表中,那么点击视频中的任何位置都将暂停视频。如果在启动序列过程中并且有更多的视频要播放(不包括最终的循环视频),那么则启动下一个视频。

技术信息


和Bink视频播放器不同,iOS视频播放器是在主OS线程中运行的,而不是在渲染线程(也不是在游戏线程)中运行的。主操作系统线程是所有UIKit功能运行的线程(显示警告、弹出Game Center界面等)。一般,主线程是空闲的,所以游戏启动应该是非常快的。

iOS中支持文本覆盖层(脚本代码中的AddTextOverlay ),但是游戏不能在视频上进行渲染(在Bink播放器中,UE3 UFont对象使用Canvas来在视频上面进行渲染)。iOS播放器将会指定的UFont获得最大的字符高度,并将该高度和指定的YScale相乘,然后使用这个数值作为创建iOS系统字体的磅值。CastleGame(正如在CastleMap中使用的 - Epic Citadel关卡)使用新添加的OnEngineLoaded脚本事件来添加一个写着“Start(启动)”的文本覆盖层,以便用户点击进入视频跳过视频的剩余部分并启动游戏。