控制台命令是虚幻UE引擎较为方便的对象,可以在编辑器和运行时轻松调用,并且在调试时很有用,那么本文将介绍如何使用 FAutoConsoleCommand 添加控制台命令。

因为会添加一个控制台命令,所以尝试使用 DumpConsoleCommands 会是一个不错的选择,它也在常用命令列表中进行了介绍。
#包括 "HAL/IConsoleManager.h"
static FAutoConsoleCommand TestCommand = FAutoConsoleCommand(
TEXT("Test.Command"), // 名字
TEXT("Say Hello\nSay Hello(2)\nSay Hello(3)"), // 说明
FConsoleCommandDelegate::CreateLambda([]() // 执行时的处理
{
UE_LOG(LogTemp, Log, TEXT("Helo"));
})
);
命令调用
调用自己的命令时,在控制台输入 FAutoConsoleCommand 的构造函数中指定的命令名。

如果描述中有换行符,则在命令名称后传递问号(?)以从第二行开始输出描述。

命令类型
如果希望命令具有参数,请使用 FConsoleCommandWithArgsDelegate 而不是FConsoleCommandDelegate。
但是,参数作为在控制台中键入的结果的字符串数组传递,由空格分隔,因此需要自己解释。
根据使用的委托类型,传递了一些 UWorlds 和 FOutputDevices,总结在下表中。
类 | 函数 | 参数 |
FAutoConsoleCommand | FConsoleCommandDelegate | 没有任何 |
FAutoConsoleCommand | FConsoleCommandWithArgsDelegate | 常量 TArray |
FAutoConsoleCommand | FConsoleCommandWithWorldArgsAndOutputDeviceDelegate | 常量 TArray&,UWorld*,FOutputDevice& |
FAutoConsoleCommandWithWorld | FConsoleCommandWithWorldDelegate | UWorld* |
FAutoConsoleCommandWithWorldAndArgs | FConsoleCommandWithWorldAndArgsDelegate | 常量 TArray&,UWorld* |
FAutoConsoleCommandWithOutputDevice | FConsoleCommandWithOutputDeviceDelegate | FOutputDevice& |
也可以在运行时添加命令,在这种情况下,将能够将以前的源代码粘贴到任何喜欢的地方并使用它。
但是,请注意,一旦变量到期,该命令就会被删除。
查看 FAutoConsoleCommand 构造函数的源码,可以看到它使用了如下命令注册函数IConsoleManager::RegisterConsoleCommand。
IConsoleManager::Get().RegisterConsoleCommand();
父类 FAutoConsoleObject 的析构函数包含注销函数 IConsoleManager ::UnregisterConsoleObject。