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的にはとても簡単にコンソールに"オレオレコマンド"を追加できるので開発が捗りますね。