首发地址:UnrealEngine Console 使用和原理浅析
说明
对 UnrealEngine(以下简称 UE) Console 的作用、使用方法和执行流程进行简单说明和记录。
作用
来源于 ChatGPT
- UE Console Commands 是指在 Unreal Engine(虚幻引擎)中使用的控制台命令。它们可以用于调试游戏、测试场景、修改游戏设置等方面。通过控制台命令,开发人员可以更快地进行调试和测试,从而提高开发效率。
- 常见的UE控制台命令包括 BugItGo 、ToggleDebugCamera、ShowCollision、SetGravity、God、Fly、SetTimeOfDay、Ghost、Slomo、SetFOV 和 Quit 等。这些命令可以通过在游戏中按 ~ 键打开控制台来执行。
如何自定义 Console 指令
主要有2种方式来自定义自己的 Console 指令
- IConsoleManager::Get().RegisterConsoleCommand
- 给 UFUNCTION 添加 Exec 。
具体都是在 UConsole::ConsoleCommand 中执行。
RegisterConsoleCommand
说明
- Console 保存在 FConsoleManager 的 ConsoleObjects 中,通过 UEngine::Exec 来调用。
例子
参见 FShaderCompileJobCollection::FShaderCompileJobCollection
:
LogJobsCacheStatsCmd = IConsoleManager::Get().RegisterConsoleCommand(
TEXT("r.ShaderCompiler.LogCacheStats"),
TEXT("Prints out the stats for the in-memory shader job cache."),
FConsoleCommandDelegate::CreateRaw(this, &FShaderCompileJobCollection::HandleLogJobsCacheStats),
ECVF_Default
);
流程图
Exec
说明
Console 作为方法保存在反射信息中,通过 UObject::FindFunction 获取到方法最终予以 Invoke 执行。
例子
参见 UCheatManager::BugItGo
:
UFUNCTION(Exec)
virtual void BugItGo(float X, float Y, float Z, float Pitch, float Yaw, float Roll);
流程图
限制
只有以下类的方法可以支持 Exec 标签:
- APawn
- APlayerController
- UPlayerInput
- UCheatManager
- AGameMode
- UGameInstance
- AHUD
声明:本文来自公众号:GameDevLearning,转载请附上原文链接及本声明。