UE4 のコンソールにユーザー定義のコマンドを追加する方法
テンプレプロジェクトでは @ キーででてくる便利なコンソールにユーザー定義のコマンドを追加する例:
// MyActor.h // ... public: // コンソールから呼びたい UFUNCTION の宣言 UFUNCTION( BlueprintCallable ) void hoge(); // ...
AMyActor::AMyActor()
{
// ...
if ( !IsRunningCommandlet() )
{
IConsoleManager::Get().RegisterConsoleCommand
( TEXT( "hoge" ) // <-- コマンド名
, TEXT( "hoging to log." ) // <-- コマンドの説明
// ↓コマンド本体; 今回は UFUNCTION の this の "hoge" を呼ぶ
, FConsoleCommandDelegate::CreateUFunction( this, TEXT( "hoge" ) )
, ECVF_Default
);
}
}
void AMyActor::hoge()
{
UE_LOG( LogTemp, Log, TEXT( "hoge!" ) )
}
↓プレイ中の @ で hoge コマンドが使えるようになり、

↓実行すると結果的に AMyActor::hoge() が実行されログに "hoge!" が出力される。

コマンドとして登録するファンクター(相当)のそれは UFUNCTION を放り込む FConsoleCommandDelegate::CreateUFunction に限らず、 lambda expression を放り込む FConsoleCommandDelegate::CreateLambda なども使える。
IConsoleManager::Get().RegisterConsoleCommand ( TEXT( "hoge" ) , TEXT( "hoging to log." ) // ↓ラムダも放り込めて便利。 , FConsoleCommandDelegate::CreateLambda( [ & ] { hoge(); } ) , ECVF_Default );
C++er的にはとても簡単にコンソールに"オレオレコマンド"を追加できるので開発が捗りますね。