当前位置: 首页 > news >正文

【UE4/UE5】在虚幻引擎中创建控制台指令的几种方法

大家好,我是key。

在使用 Unreal Engine 做开发的时候,我们经常需要一些“隐藏指令”来调试,比如快速生成一个物体、打印日志、或者修改某些运行参数。UE 本身就支持自定义 控制台指令(Console Command),而且方式不止一种。下面我总结了几种常见做法,大家可以根据需求来选。


1. 使用 FAutoConsoleCommand

这是最常见、最简单的方式,写一个全局变量就能自动注册。

比如我们用指令“MyGame.Hello"来演示,

#include "Engine/Engine.h"
#include "HAL/IConsoleManager.h"// 简单指令
static FAutoConsoleCommand MyTestCommand(TEXT("MyGame.Hello"),    //命令TEXT("Print a hello message"),    //描述FConsoleCommandDelegate::CreateLambda([](){if (GEngine){GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, TEXT("Hello from console!"));}})
);// 带 World 的指令
static FAutoConsoleCommandWithWorld MyWorldCommand(TEXT("MyGame.SpawnCube"),    //如上TEXT("Spawn a cube in world"),FConsoleCommandWithWorldDelegate::CreateLambda([](UWorld* World){if (World){World->SpawnActor<AActor>(AActor::StaticClass(), FVector::ZeroVector, FRotator::ZeroRotator);}})
);

用法:在控制台输入


MyGame.Hello MyGame.SpawnCube

2. 使用 IConsoleManager::RegisterConsoleCommand

如果你是写插件或者模块,通常会在 StartupModule() 里注册指令。

// 在模块 StartupModule 里
IConsoleManager::Get().RegisterConsoleCommand(TEXT("MyGame.DynamicCommand"),TEXT("Dynamic command example"),FConsoleCommandDelegate::CreateRaw(this, &FMyModule::MyCommandHandler),ECVF_Default
);

3. Exec 函数

在某些类里(比如 PlayerController、GameInstance)你可以重写 Exec,自己解析指令。

bool AMyPlayerController::Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar)
{if (FParse::Command(&Cmd, TEXT("MyCustomCommand"))){UE_LOG(LogTemp, Log, TEXT("MyCustomCommand executed!"));return true;}return Super::Exec(InWorld, Cmd, Ar);
}

输入:

MyCustomCommand

4. CheatManager + UFUNCTION(exec)

这是最常见的“作弊指令”写法,非常适合快速调试。

UCLASS()
class UMyCheatManager : public UCheatManager
{GENERATED_BODY()public:UFUNCTION(exec)void KillAllEnemies(){UE_LOG(LogTemp, Log, TEXT("All enemies killed!"));}
};

控制台输入:

KillAllEnemies


5. 蓝图里用 exec

如果你写蓝图函数的时候加上 UFUNCTION(exec),同样能在控制台调用。不过这一点大多数人不太常用,一般还是在 C++ 里写比较方便。

总结

  • 全局/快速调试FAutoConsoleCommand

  • 模块/插件IConsoleManager::RegisterConsoleCommand

  • 类内扩展 → 重写 Exec

  • 作弊/调试命令CheatManager + exec

http://www.dtcms.com/a/428464.html

相关文章:

  • 51个人网站产品推广策划方案怎么做
  • 如何解决 pip install 安装报错 ImportError: cannot import name ‘xxx’ from ‘yyy’ 问题
  • 在Centos的Linux中安装Windows10系统
  • 小型企业做网站的价格自媒体自助下单网站怎么做
  • 解码数据结构树
  • 通信中级(综合能力)小范围重点
  • 私人做网站有什么用建设网站需要哪些元素
  • 网站开发整体流程公众号怎么做微网站吗
  • 网站制作上首页图片在线设计网站
  • 多线程逻辑备份工具 mydumper 全方位解析:备份恢复原理与实战用法
  • C++ 运算符重载与友元:实现优雅直观的类操作
  • 开源外贸网站升降平台找企汇优做网站推广
  • 汽车之家 网站建设网站设计的风格有哪些
  • Windows上部署FTP详解
  • 沙河做网站重庆丰都建设局网站
  • 企业网站建设情况汇报网页设计费用明细
  • 集群服务器架构学习计划
  • YOLO入门教程(番外):计算机视觉—图像增广
  • 学院网站建设项目的活动分解沟通交流类网站有哪些
  • 吕梁建站公司大连网站制作公司
  • 吉安网站推广软文营销定义
  • web前端团队开发code review方案最佳实践
  • 张槎网站建设企业网站建设与管理作业
  • 网站找什么公司做网站开发的难点
  • Android Studio | 设置国内代理(SDK 设置国内代理(阿里云镜像))
  • 怎么注销建设银行网站用户名设计网站费用多少
  • 【更新至2024年】1999-2024年上市公司数字化转型程度数据(含原始数据+计算代码+结果)
  • 优化网站建设哪家专业wordpress tag 别名
  • Android 常见界面布局详解
  • 4-创建索引和约束