BLOGブログ

2022.08.17UE5UE/ C++UE/ Debug

[UE5] FAutoConsoleCommand を使ってコンソールコマンドを追加する方法

執筆バージョン: Unreal Engine 5.0

皆さんこんにちは、エンジニアの森です

コンソールコマンドは、エディターでもランタイムでも気軽に呼び出せる便利な存在で、よくデバッグ時などに重宝されます

今回は FAutoConsoleCommand を使って簡単にコンソールコマンドを追加する方法を紹介します

過去記事では、CheatManagerを使ってコンソールコマンドを追加する方法を取り上げているので、そちらも参考にしてください

コンソールコマンドを追加するので、よく使うコマンド一覧でも紹介している DumpConsoleCommands を試してみるのも良いと思います


ソースコード

以下のソースコードを適当な場所に貼り付けて、コンパイルするとコンソールコマンドが追加されます

この方法は以前の記事と比べると手順が少ないのがメリットです


コマンド呼び出し

自作したコマンドの呼び出しをするときには、FAutoConsoleCommand のコンストラクターで指定したコマンド名をコンソールで入力します

説明文の中に改行文字がある場合、コマンド名の後ろに「?」を渡すことで 2 行目以降の説明文が出力されます


コマンドの種類

コマンドを引数付きにしたい場合は、FConsoleCommandDelegate ではなく FConsoleCommandWithArgsDelegate を使用します

ただし、引数はコンソールに入力した内容が空白で区切られた結果の文字列配列として渡されるので、その解釈は自分で行う必要があります

使用するデリゲートによって、UWorld と FOutputDevice が渡されるものがあるので、以下の表にまとめます

必要に応じて使い分けてください

使用するクラス 使用するデリゲート 引数
FAutoConsoleCommand FConsoleCommandDelegate なし
FAutoConsoleCommand FConsoleCommandWithArgsDelegate const TArray&
FAutoConsoleCommand FConsoleCommandWithWorldArgsAndOutputDeviceDelegate const TArray&, UWorld*, FOutputDevice&
FAutoConsoleCommandWithWorld FConsoleCommandWithWorldDelegate UWorld*
FAutoConsoleCommandWithWorldAndArgs FConsoleCommandWithWorldAndArgsDelegate const TArray&, UWorld*
FAutoConsoleCommandWithOutputDevice FConsoleCommandWithOutputDeviceDelegate FOutputDevice&

また、コマンド追加はランタイムでも可能です

その場合は先ほどのソースコードを好きな箇所に貼り付けて使用することになります

ただし、変数の寿命が尽きると同時にコマンドも削除される点を意識してください

FAutoConsoleCommand のコンストラクタのソースコードを見ると、以下のコマンド登録関数 IConsoleManager::RegisterConsoleCommandを使用していることが分かります

親クラスである FAutoConsoleObject のデストラクタには、登録解除の関数 IConsoleManager::UnregisterConsoleObjectが記述されています


というわけで、今回は FAutoConsoleCommand の紹介でした

ありがとうございました