UDN
Search public documentation:
MobileLoadTimesAndInstallPackageSizeCH
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
한국어
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
移动设备应用程序加载时间及安装后所占空间大小
文档概要:减少移动设备应用程序的加载时间及最终安装程序所占空间的常用方法。 文档变更记录: 最初创建。概述
加载时间
着色器
Shader Keys(着色器关键码)
UE3中移动设备上的着色器通过它们独特的着色器关键码加以区分。请参照MobileMaterialReference中的信息来获得关于这个实现的介绍。降低着色器关键码的数量不是简单的在您的应用程序中降低总的材质数量的问题,因为材质可以根据特定的材质设置生成不同数量的关键码。减少Shader Keys(着色器关键码)
移动设备着色器分析器
MobileShaderAnalyzer工具可以帮助您获得您的应用程序正在生成的着色器关键码的数量、这些关键码从哪些材质生成而来、及如何修改材质来降低着色器关键码的数量。请参照上面的连接获得使用该工具的信息。重复的关键码
正如文章中针对MobileShaderAnalyzer所提到的,通常材质将迭代具备某些设置的多个版本,因为引擎不知道这些材质是如何被使用的。通过清晰地告知引擎您使用这些材质的目的,您可以从您的应用程序中删除很多重复的版本。- 植皮. 如果您看到具有皮肤和没有皮肤的着色器的两个版本,并且您知道将要总是在植皮的网格物体上使用它们,那么您可以将该材质添加到您的应用程序的!DefaultEngine.ini文件下的!MobileMaterialCookSettings部分中。在该部分添加一行 ‘+SkinningOnlyMaterials=
’。在烘焙过程中将仅创建该着色器带皮肤的版本,将立即将该材质所创建的关键码数量减少一半。示例:
[MobileMaterialCookSettings] +SkinningOnlyMaterials=M_FireChest +SkinningOnlyMaterials=M_IceChest
- 雾 如果您在您的游戏中启用了雾,那么引擎将会创建带雾和不带雾的着色器版本,当任何可能的情况下为了获得更好的性能时,将会动态地使用不带雾的着色器进行渲染。如果您的应用程序能够承受一直用带雾的版本的着色器所带来的性能消耗,那么您可以通过在您的应用程序的!DefaultSystemSettings.ini的[SystemSettings]部分下设置bMobileMinimizeFogShaders=true来禁用该着色器迭代版本。
- 粒子设置 有很多粒子设置可以强制 打开/关闭 着色器中的某个迭代版本。如果您看到启用了您不需要的任何关键设置,那么可以在材质中禁用那个功能。
Material Instance Constants(材质实例常量)
最小化着色器关键码创建数量的最好方法是尽可能地利用主材质和材质实例常量(MICs)。在子材质中改变材质实例常量一般不会增从主材质创建的着色器关键码的数量。从主材质着手创作您的内容是稍后项目中着色器关键码呈爆炸式增多的很好方法。请查看MaterialInstanceConstant (材质实例常量)页面了解更多信息。其它着色器关键码相关注意事项
Shader Groups(着色器组)
着色器组尽管不能帮忙消除着色器关键码,但是却可以通过在应用程序中延迟预先准备着色器关键码子集的时间点。最常见的例子是地图加载。您可以在您的应用程序中快速地为每个关卡创建一个着色器组,然后烘焙器将那个地图所有的关键码添加到它自己的着色器组中,并根据加载的关卡不同动态地预先准备这些关键码。这在某种程度上增加了您得地图加载时间,但是一般却大大地降低了您的应用程序的总加载时间。 每个地图的着色器组是通过Engine.ini文件的!MobileShaderGroups部分创建的,如下所示:[Engine.MobileShaderGroups] .ShaderGroup=MyGroup .Package=MyMapName
Commandlet->AddDynamicMobileShaderGroup(FName(*GroupName), FName(*PkgFilename));
GMobileShaderInitialization.StartCompilingShaderGroup(FName(*ShaderGroupName), TRUE);
未预先准备的关键码
注意,有些时候可能会有引擎不会动态地预先准备某些着色器关键码的情形,一般会发生在第三方软件绑定到引擎渲染通道上的情形中。您可以通过在您的!DefaultEngine.ini 文件中包含它们来手动地将这些关键码在启动时进行预先准备,如下所示:[Engine.StartupShaderKeys] .Key=0x1980000000_0x3000000000000000
引导时间分析
请参照ProfilingBasics获得关于分析引导时间的信息。应用程序大小
IPA 查看器(iOS)
IPAExamine /?
IPAExamine <您的ipa文件的完整路径>
检查已烘焙的数据
有用的命令行开关
PkgInfo
要检查您的烘焙包(.XXX文件)中的内容,你可以使用!PkgInfo命令行开关,详见CommandletList页面的介绍。 比如,Gamename.exe PkgInfo <path to package> -exports –simple –platform=<platform> > myfile.txt