くーこのプログラマメモ

UE4などゲーム開発に関するメモ

C++からCommandletを実行する方法

使用バージョン:UE4.24.3

目的

何かしらのバッチ処理や自作ツールからCommandletを実行したい場合があります。
コマンドライン引数-run=[Commandlet名]で実行することができますが、複数のCommandletを実行したい場合は実行する度にエディタの起動と終了が実行されてしまうため、時間がかかってしまうことがあります。
そういった場合は複数のCommandletを実行する処理を用意することになるかと思います。

コード

#include "Commandlets/Commandlet.h"

void ExecuteCommandlet(const FString& CommaneletName, const FString& Params)
{
    UClass* CommandletClass = FindObject<UClass>(ANY_PACKAGE, *CommaneletName, false);
    check(::IsValid(CommandletClass));
    UCommandlet* Commandlet = NewObject<UCommandlet>(GetTransientPackage(), CommandletClass);
    check(::IsValid(Commandlet));
    Commandlet->Main(Params);
}