虚幻三引擎游戏命令

命令行参数和控制台命令

游戏命令包括两种,一种是运行游戏时候指定的命令行参数,另外一种则指的是进入游戏后输入的控制命令。

控制台命令

对于虚幻三来说,控制台命令分为两种,一种是引擎中已经支持的可执行命令,这些命令都是在C++类的Exec函数中进行处理的。另一种是带exec前缀的脚本函数,称为可执行函数。
下面根据用途统一总结,不进行区分。

常用命令

exit(quit)

退出游戏

pause

暂停游戏,按pause break键也可以。

open [url]

打开地图,额外的参数同命令行参数的url部分。比如,在大厅中开始游戏就是用的该命令打开服务器下发的ip地址。

restartLevel

重启当前关卡

reconnect/disconnect/cancel

重新连接服务器,断开服务器连接,取消进行的服务器连接操作。

Kill系列

  1. KillAll [class] - 销毁或破坏关卡中特定类的所有实例。
  2. KillPawns - 销毁关卡中的所有 pawn。
  3. KillBadGuys - 销毁所有不在同一个团队作为玩家的 pawns。
  4. Suicide -玩家自杀

god/fly/walk

幽灵模式(可以飞、穿墙)/飞行模式/正常模式

AllAmmo

将弹药数目设置为所有武器的最大值

SetRes

setres [width] [x|X] [height] [w|f]
改变分辨率(width为宽,height为高)
模式(w = 窗口; f = 全屏),
比如 800x600w表示分辨率为800乘以600的窗口模式,
1024x768f表示分辨率为1024乘以768的全屏模式。

FreeCamera

将玩家的相机设置为自由轨道相机模式(第三人称视角),FreeCamera false恢复。

Addbots

  1. AddBots [number] - 为了进行测试,会向关卡中添加指定机器人数.
  2. AddBlueBots [number] - 在团队游戏中为蓝队添加指定的机器人数。
  3. AddRedBots [number] - 在团队游戏中为红队添加指定的机器人数。
  4. AddNamedBot [name] [bUseTeamNum] [teamnum] - 添加一个使用指定名称的机器人。如果 bUseTeamNum 为真而且指定了团队数,那么将该机器人添加到指定的团队。

Shot

  1. shot/screenshot 以当前的屏幕分辨率截取屏幕截图。
  2. tiledshot [factor] 以当前分辨率乘以指定因数为分辨率来获取屏幕截图。比如,tiledshot 2会得到2乘以2的shot截图,分辨率也是shot的2倍。
  3. SHOTNOHUD,不截屏hud。

渲染命令

ViewMode

viewmode命令设置渲染模式
1. detaillight 默认模式,使用受到法线贴图的光照影响的中性色彩材质渲染场景
2. unlit 无光照
3. lightingonly 只使用光照
4. wireframe 线框模式
5. brushwireframe 线框模式,但是显示画刷边缘
6. lightcomplexity 显示光照复杂度
7. lightmapdensity 显示光照贴图密度
8. litlightmapdensity 显示光照贴图像素密度 6和7的结合
9. texturedensity 显示每个表面上漫反射通道上的贴图像素密度
10. shadercomplexity 显示每个表面上所应用的材质的复杂度

Show

切换各种项目的显示(仅用于客户端)
1. bounds 切换actor边界的显示(包围盒和包围球)
2. volumes 切换体积的显示(体积盒)
3. collision 切换碰撞体的显示状态
4. bsp 切换bsp几何体的显示(用bsp画刷制作的物体,比如墙)
5. fog 切换雾actors的显示
6. particles 切换粒子几何体的显示(比如烟雾弹,特效做的门)
7. paths 切换路径或导航网格物体的显示
8. navnodes 切换和寻路相关的actors的显示
9. foliage 切换植被的显示
10. terrain 切换地形几何体的显示
11. terrainpatches 切换地形块的显示。在每个块的周围描画一个轮廓。
12. staticmeshes 切换静态网格物体几何体的显示
13. decal 切换decal actors的显示
14. decalinfo 切换decals(贴花)的调试开发信息的显示(平头截体、切线轴等)。
15. staticmeshes 切换静态网格物体几何体的显示。
16. postprocess 切换后期处理特效的显示
17. skelmeshes/skeletalmeshes 切换骨架网格物体几何体的显示
18. MISSINGCOLLISION 切换高亮显示启用了碰撞但是没有碰撞网格物体的静态网格物体

显示命令

display系列

displayall class prop

在屏幕上实时地显示类class所有实例的属性prop的值

display obj prop

在屏幕上实时地显示对象obj的属性prop的值。

displayallstate class

在屏幕上实时地显示类class所有实例的当前处于的状态,比如行走,空闲,攻击等

displayclear

清楚display系列命令所有的输出

set

set class/obj prop value
1. 设置给定类class(包括其子类)的所有对象的属性prop的值为value
2. 设置给定对象obj的属性prop的值为value

可以用displayall实时显示出来这个属性,再用set设置后观察属性变化。

统计命令

stat命令负责在游戏运行时在屏幕上启用显示统计数据功能。

none

关闭所有统计数据的显示

fps

切换帧频率统计数据的显示

anim

切换动画系统统计数据的显示状态

net

切换网络统计数据显示的 打开/关闭 状态

game

切换游戏统计数据的显示。(更新时间等)

ui

切换UIScene统计数据的显示

collision

切换碰撞统计数据的显示状态

octree

切换八叉树相关统计数据的显示

physics

切换一般物理统计数据的显示
1. physicscloth 切换关于布料仿真统计数据的显示。
2. physicsfields 切换关于物理域的统计数据的显示状态。
3. physicsfluids 切换关于PhysX流体仿真统计数据的显示。

memory

切换一般内存统计数据的显示

memorychurn

切换处理内存分配的统计数据的显示

scenerendering

切换场景渲染统计数据的显示

startfile/stopfile

  1. startfile开始捕获统计数据文件以便和StatsViewer结合使用。
  2. stopfile完成捕获统计数据文件。
  3. 文件存储位置:UDKGame\Profiling\UE3Stats\xxx文件..ustats
  4. 打开工具:Binaries\StatsViewer.exe

GameProfile/ProfileGame

该命令在虚幻三和UDK中用于统计脚本函数的运行时间。
1. start 开始Profile
2. stop 结束Profile
3. 文件:UDKGame\Profiling\T-2016.11.29-19.26.55.gprof
4. 打开工具:Binaries\GameplayProfiler.exe
5. UObject::CallFunction中统计了每个函数的调用时间。

调试命令

调试命令的结果是控制台形式的输出,并不是在游戏窗口中显示。在逆战中,需要按f8显示控制台窗口,再输入调试命令。其余类型的命令可以使用f7也可以使用f8。

obj

gc/garbage

强制进行垃圾回收清理。

list

显示包中的一个类别的所有物体的列表。
1. obj list显示包中所有的物体列表。
2. obj list class=pawn 只显示指定的类的所有物体的对象列表,比如pawn。

dump

dump objname
在控制台中输出某个对象的所有属性,可以先用displayall找到这个对象名。

物理命令

nxvis collision…

碰撞相关命令

nxvis joint…

关节相关命令

nxvis cloth…

布料相关命令

nxvis fluid…

流体相关命令

nxvis softbody…

软体相关命令

内存命令

mem

显示内存分配信息
1. mem
2. mem detailed
3. mem stat

configmem

显示配置文件内存分配信息

particlememory

粒子内存信息

memfragcheck

内存碎片检测

memleakcheck

内存泄漏检测

UI/GFX命令

ShowHUD

显示(隐藏)所有的HUD

ShowScores

显示(隐藏)积分面板

Toggleui

切换UI的更新和显示

gfxinvoke

调用GfxMovie对应的flash文件的as函数

dumpsftextures

输出GFx Texture Usage到log文件中。

虚幻三控制台命令调用流程

  • APlayerController::ConsoleCommand。
    • ULocalPlayer::Exec,处理一部分命令。
      • UGameViewportClient::Exec,引擎自带的大部分命令在此函数中实现。
        • UGFxInteraction::Exec,执行gfx相关的命令。
        • UUIInteraction::Exec,处理一部分命令。
          • UUIInteraction::ScriptConsoleExec。
          • UGameUISceneClient::Exec。
            • UUISceneClient::Exec.
              • UUISceneClient::ScriptConsoleExec.
        • UGameViewportClient::ScriptConsoleExec。
        • UEngine::Exec,处理一部分命令。
      • UPlayer::Exec,处理一部分命令。
        • UWorld::Exec。
        • APlayerInput::ScriptConsoleExec
        • APlayerController::ScriptConsoleExec
        • APawn::ScriptConsoleExec
        • AInvManager::ScriptConsoleExec
        • AWeapon::ScriptConsoleExec
        • AHUD::ScriptConsoleExec
        • AGameInfo::ScriptConsoleExec
        • ACheatManager::ScriptConsoleExec
        • AInteraction::ScriptConsoleExec
  • 返回APlayerController::ConsoleCommand,命令未处理。

注意:UObkect::ScriptConsoleExec,处理的是当前类中自定义脚本命令(执行带exec前缀的脚本函数)。
因此,流程中带有ScriptConsoleExec函数执行的类(以及子类)都可以定exec脚本函数来执行控制台命令。只有在处理流程中的命令才有效,处理流程外的命令无法被处理。

自定义命令

Native命令

在控制台命令调用流程中涉及到的C++类的Exec函数中添加对新命令的处理逻辑。

脚本命令

在处理流程中的有ScriptConsoleExec调用的类(Interaction、UISceneClient、GameViewportClient、PlayerInput、PlayerController、Pawn、InvManager、Weapon、HUD、GameInfo、CheatManager)
中添加exec前缀的脚本函数。

更多的游戏命令可以参考文档:Console Commands

虚幻引擎游戏命令