UE4命令行参数是大小写不敏感的
FCommandLine::Get()可获取命令行
FParse::Param用来解析形如-xx的参数
FParse::Value用来解析形如key=value或-key=value的参数
UE4Editor.exe "%GameDir%MyGame.uproject" // 启动MyGame项目编辑器
UE4Editor.exe "%GameDir%MyGame.uproject" -nothreading // 以单线程的方式启动MyGame项目编辑器 注:缺省带-threading参数,以多线程的方式启动
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game // 单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -norhithread // 禁用rhi线程模式来单机运行TestMap_Main地图(在LaunchEngineLoop.cpp的PreInit方法) 注:缺省带-rhithread参数
各个平台是否开启RHI线程,情况如下:
DX11默认不支持,可以通过#define EXPERIMENTAL_D3D11_RHITHREAD 1来开启
DX12在非Editor模式下默认支持
OpenGL根据FeatureLevel和r.OpenGL.AllowRHIThread的值来决定是否开启
r.OpenGL.AllowRHIThread 0 // 不使用RHI线程
r.OpenGL.AllowRHIThread 1 // 使用RHI线程(缺省)
Vulklan默认开启1个RHI线程
r.Vulkan.RHIThread 0 // 不使用RHI线程
r.Vulkan.RHIThread 1 // 使用1个RHI线程(缺省)
r.Vulkan.RHIThread 2 // 使用多个RHI线程
Metal会根据显卡芯片版本和r.Metal.IOSRHIThread的值来决定是否开启
r.Metal.IOSRHIThread 0 // 不使用RHI线程(缺省)
r.Metal.IOSRHIThread 1 // 使用1个RHI线程
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -server // 后台运行TestMap_Main地图ds进程 注:没有命令行窗口
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main?multihome=10.32.212.47?port=7778 -game -server // 后台运行TestMap_Main地图ds进程,监听本机IP为10.32.212.47网卡的7778端口
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -server -log // 前台运行TestMap_Main地图ds进程 注:有命令行窗口,log会实时地刷到命令行窗口中
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -server MULTIHOME=10.32.212.47 Port=8888 // 绑定到10.32.212.47:8888,后台运行TestMap_Main地图ds进程
UE4Editor.exe "%GameDir%MyGame.uproject" 127.0.0.1 -game // 启动游戏并联网加入本地ds对局中
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main?MaxPlayers=10?MaxSpectators=2 -game -server -log // 运行TestMap_Main地图ds进程,并设置最大玩家数为10,最大观战玩家数为2
UE4Editor.exe "%GameDir%MyGame.uproject" 127.0.0.1?SpectatorOnly=1 -game // 启动游戏并以观战者的身份联网加入本地ds对局中
注1:解析形如?MaxPlayers=10?MaxSpectators=2的Options字符串相关功能函数UGameplayStatics::ParseOption、UGameplayStatics::HasOption、UGameplayStatics::GetIntOption
注2:FURL可用来存储和解析Options字符串,并提供相关功能函数FURL::HasOption、FURL::GetOption、FURL::GetHostPortString
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -CmdLineFile=d: est.txt // 读取d: est.txt中的内容并加到命令行参数中 注:test.txt为-log -nosound
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game exec=cmd.txt // 启动游戏后,执行引擎EngineBinaries目录下cmd.txt中的命令序列
----------------------------------------------------------------------------------------------------
如cmd.txt的内容如下(每行一个命令):
god
viewmode wireframe
----------------------------------------------------------------------------------------------------
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game ExecCmds=god,pause // 启动游戏后,依次执行god和pause命令 注:ExecCmds中不支持带空格的命令 如 viewmode wireframe
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -LogCmds="foo verbose, bar off" // 对foo类型日志开启verbose模式,关闭bar类型日志,单机启动TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game LOG=test.log // 单机运行TestMap_Main地图,日志输出到游戏log目录下test.log文件中
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game ABSLOG=d: est2.log // 单机运行TestMap_Main地图,日志输出到d: est2.log文件中
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -log // 单机启动TestMap_Main地图,并打开命令行日志窗口
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -log -ConsoleX=100 -ConsoleY=200 // 单机启动TestMap_Main地图,打开命令行日志窗口并将其左上角放在(100,200)屏幕坐标处
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -forcelogflush // 单机启动TestMap_Main地图,打印每句log都立即flush到文件中
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game logflushinterval=5 // 单机启动TestMap_Main地图,每5秒定时flush日志到文件中
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -WARNINGSASERRORS // 将warning日志视为error
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -NOSCREENMESSAGES // 关闭ScreenMessages屏幕输出
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -WaitForDebugger // 单机启动TestMap_Main地图并等待调试
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -pvd // 单机启动TestMap_Main地图,并自动连接本机正在运行的PhysX Visual Debugger
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -verifygc // 打印出gc相关的调试信息
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -noverifygc // 不打印出gc相关的调试信息
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -norenderthread // 渲染放在主进程中,单机启动TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -onethread // 同上
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -messaging -SessionName=fps1 // 开启与Session FrondEnd性能分析工具的通讯,并设置Session的名字为fps1
UE4Editor.exe "%GameDir%MyGame.uproject" -noshaderworker // 启动MyGame项目编辑器,当需要编译shader时,编辑器自己编译,而不使用ShaderCompileWorker进行编译
UE4Editor.exe "%GameDir%MyGame.uproject" -xgeshadercompile // 启动MyGame项目编辑器,当需要编译shader时,会使用ShaderCompileWorker进行编译,并连接IB进行分布式加速
UE4Editor.exe "%GameDir%MyGame.uproject" -noxgeshadercompile // 启动MyGame项目编辑器,当需要编译shader时,会使用ShaderCompileWorker进行编译,并禁止连接IB进行分布式加速
UE4Editor.exe "%GameDir%MyGame.uproject" -BUILDMACHINE // 以构建机模式启动MyGame项目编辑器,用于决定是否启用调试输出 注:会最大化地减少弹框确认等人工交互过程
UE4Editor.exe "%GameDir%MyGame.uproject" -RUNNINGUNATTENDEDSCRIPT // 不打断执行过程,任何的弹框都会用缺省值回应
UE4Editor.exe "%GameDir%MyGame.uproject" -SILENT // 不打断执行过程,减少弹框确认
UE4Editor.exe "%GameDir%MyGame.uproject" -UNATTENDED // 不打断执行过程,减少弹框确认 设置为无人管理的状态。禁用需要从用户获得反馈的任何东西
UE4Editor.exe "%GameDir%MyGame.uproject" -VERBOSE // 设置编译器使用详细的输出
UE4Editor.exe "%GameDir%MyGame.uproject" httpproxy=web-proxy.oa.com // 设置http代理服务器为web-proxy.oa.com
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -SKIPCOMPILE // 单机运行TestMap_Main地图,启动时不检查模块代码是否再需要编译
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -server -log -Limitclientticks // 前台运行TestMap_Main地图ds进程,并强制对网络更新进行节流
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -FixedSeed // 使用固定的值0初始化随机数生成器
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -VSync // 开启垂直同步
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -NoVSync // 开启垂直同步
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -nosound // 以无声音单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -nosplash // 以无闪屏单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -NOTEXTURESTREAMING // 禁用贴图动态载入。总加载最高质量的贴图。
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -NoLoadingScreen // 不加载Loading视频,单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -emulatestereo // 以左右分屏立体模式单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -Windowed // 单机以窗口模式运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -FullScreen // 单机以全屏模式运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -Windowed ResX=800 ResY=600 // 单机以窗口模式运行TestMap_Main地图 设置并移动窗体,使得渲染画面宽800高600
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -Windowed WinX=80 WinY=150 ResX=800 ResY=600 // 单机以窗口模式运行TestMap_Main地图 设置并移动窗体,使得渲染画面宽800高600,左上角屏幕坐标为(80, 150)
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -ansimalloc // 使用Ansi内存分配器单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -tbbmalloc // 使用TBB内存分配器单机运行TestMap_Main地图(windows下缺省为该方式)
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -mimalloc // 使用mimalloc内存分配器单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -stompmalloc // 使用stompmalloc内存分配器单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -binnedmalloc // 使用Binned内存分配器单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -binnedmalloc2 // 使用Binned2内存分配器单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -binnedmalloc3 // 使用Binned3内存分配器单机运行TestMap_Main地图(需为64位游戏)
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -opengl // 以opengl单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -opengl3 // 强制以opengl3单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -opengl4 // 强制以opengl4单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -metal // 以metal单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -vulkan // 强制以vulkan单机运行TestMap_Main地图
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -d3d10 // 以d3d10单机运行TestMap_Main地图(需win7及以上)
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -dx10 // 同上
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -sm4 // 同上
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -d3d11 // 以d3d11单机运行TestMap_Main地图(需win7及以上)
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -dx11 // 同上
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -sm5 // 同上
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -d3d12 // 以d3d12单机运行TestMap_Main地图(需win10及以上)
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -dx12 // 同上
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -d3ddebug // 使用d3d调试device
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -openglDebug // 使用opengl调试模式
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -FeatureLevelES2 // 使用es2
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -FeatureLevelES31 // 使用es3.1
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game SECONDS=20 // 启动游戏后20s关闭
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -BENCHMARK // 以固定时间间隔(1/30s)运行每一帧,若游戏帧率为60帧,则游戏将以60*(1/30)=2倍的速度运行
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -BENCHMARK BENCHMARKSECONDS=50 // 以BenchMark模式启动游戏后50s关闭
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -BENCHMARK FPS=50 // 以固定时间间隔(1/50s)运行每一帧,若游戏帧率为60帧,则游戏将以60*(1/50)=1.2倍的速度运行
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -BENCHMARK -DUMPMOVIE // 以固定时间间隔(1/30s)运行每一帧,并用当前分辨率隐藏hud输出每帧图片MovieFrame00xx.png到游戏的SavedScreenshotsWindows目录中
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -NOLOGTIMES // 日志中不打印时间
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -LOGTIMES // 日志中时间使用utc格式
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -UTCLOGTIMES // 同上
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -LOGTIMESINCESTART // 日志中时间使用SinceStart格式
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -LOCALLOGTIMES // 日志中时间使用Local格式
UE4Editor.exe "%GameDir%MyGame.uproject" TestMap_Main -game -LOGTIMECODE // 日志中时间使用Timecode格式
日志中时间格式也可以在DefaultEngine.ini中配置
[LogFiles] ;LogTimes=None ;日志中不打印时间 ;LogTimes=UTC ;日志中时间使用utc格式 ;LogTimes=SinceStart ;日志中时间使用SinceStart格式 LogTimes=Local ;日志中时间使用Local格式 ;LogTimes=Timecode ;时间使用Timecode格式
日志实例
UE_LOG(LogAnimation, Warning, TEXT("FBoneReference::Initialize BoneIndex for Bone '%s' does not exist in Skeleton '%s'"), *BoneName.ToString(), *GetNameSafe(SkeletonAsset)); // 日志的类别有:NoLogging、Fatal、Error、Warning、Display、Log、Verbose、VeryVerbose // LogTimes为Local时打印出的log如下 // [989]为GFrameCounter % 1000 [2019.09.21-11.56.42:537][989]LogAnimation: Warning: FBoneReference::Initialize BoneIndex for Bone 'GunRef' does not exist in Skeleton 'F01_body_rig_Skeleton'
参考