[UE4] コンソールコマンドを追加する方法

09.05

[UE4] コンソールコマンドを追加する方法 はコメントを受け付けていません。

consolecommand

UE4では、画面右上の入力欄やOutputLogウィンドウ等から、コンソールコマンドを実行することが可能です。

既存のコマンドにも多数の便利なものがありますが、開発中のタイトル専用のコマンドが欲しくなる時もあります。

今回は、そんなゲーム実行中に呼び出せるコンソールコマンドを実装する方法をご紹介します。デバッグなどに役立てて下さい。

 

1.CheatManagerを追加する

まずは、CheatManagerを継承したクラスを用意します。

  1. メインメニューから「File -> Add Code To Project…」を選択して、コード追加ウィンドウを開きます。
  2. 右上の「Show All Classes」をONにして、「CheatManager」を検索、選択して「Next>」ボタンを押します。
  3. 名前等を設定して「Create Class」ボタンを押します。今回は「MyCheatManager」と命名します。

このクラスは後で利用します。

 

2.PlayerControllerを追加する

CheatManagerはPlayerControllerクラスに登録して使用します。

先ほどの同様の手順で、「PlayerController」を継承したクラスを追加して下さい。

名前は「MyPlayerController」とします。 

 

下記のように、CheatManagerを登録するコードを記述します。

MyPlayerController.cpp

    AMyPlayerController::AMyPlayerController(const class FPostConstructInitializeProperties& PCIP)
        : Super(PCIP)
    {
        CheatClass = UMyCheatManager::StaticClass();
    }

 

3.GameModeにPlayerControllerを登録する

先ほど追加したPlayerControllerも、GameModeに登録して使用します。

GameModeクラスは、C++テンプレートでプロジェクトを作ると、自動的に追加されているはずです。

 

下記のように、PlayerControllerクラスを登録するコードを記述します。

MyProjectGameMode.cpp

    AMyProjectGameMode::AMyProjectGameMode(const class FPostConstructInitializeProperties& PCIP)
        : Super(PCIP)
    {
        //..中略..//
        PlayerControllerClass = AMyPlayerController::StaticClass();
    }

 

4.WorldSettingsにGameModeを設定する

Unreal Editorを起動して、WorldSettingsウィンドウからGameModeを設定します。

  1. 「GameMode Override」のプルダウンから、先ほどコードに追記した「MyProjectGameMode」を選択します。
  2. 「Player Controller Class」に、自分で追加したクラスが登録されていることを確認します。

長々と登録作業ばかりでしたが、事前準備はこれでやっとオシマイです。

 

5.CheatManagerにコマンドを記述する

これで、コンソールコマンドを使用する準備が整いました。

最初に用意したMyCheatManagerに、コンソールコマンドに対応する関数を書いていきます。

ここから先は非常に簡単で、UFUNCTION(exec)と指定した関数を定義するだけです。

 

MyCheatManager.h

    UFUNCTION(exec)
    void MyCheatCommand();

MyCheatManager.cpp

    void UMyCheatManager::MyCheatCommand()
    {
        UE_LOG(LogTemp, Log, TEXT("MyCheatCommand !!!"));
    }

 

これで、ゲームを実行中に、コンソールコマンドとして「MyCheatCommand」を使用出来ます。

また、コマンドの引数も、int32やFString等の基本的な型ならば、関数の引数を宣言しておけば自動的にパースしてくれます。

とてもお手軽です。

 

今回はデバッグ目的でCheatManagerを利用する方法をご紹介しましたが、UFUNCTION(exec)は、他にもいくつかのクラスで使用可能です。

(Pawn, PlayerController, GameModeなど)

特定ゲームモードでのみ有効なコマンドや、プレイヤーキャラクターを直接操作したい場合などは、こちらの方が便利かもしれません。

 

また、コンソールコマンドはBlueprintから呼び出すことも出来ます。

うまく利用して、便利なデバッグ機能を作っていきましょう。

  • このエントリーをはてなブックマークに追加

関連記事

コメントは利用できません。

カテゴリー

ページ上部へ戻る