#memo

indiedev太郎

UE4、#IF DEBUGもどきマクロの作り方

色々やっているとShippingバージョンではやってほしくないノードとかが出てくる、C++の#IF DEBUGはDEBUGバージョンだけ指定コードをコンパイルしてくれる機能で、これと似たようなマクロがあったら便利
今回できるものは本家と違ってBPから除外するわけではないので、実際に処理が軽くなるみたいなのは薄いけど、見た目がわかりやすくなって良い

Configのビルド設定取得する

ビルド設定はDefaultGame.iniに書かれていて、C++でこれを取得する関数を用意すると今のビルド設定が見れる

DefaultGame.iniの

[/Script/UnrealEd.ProjectPackagingSettings]
BuildConfiguration=PPBC_Development

これがビルド設定の部分、エディタのビルド設定は "Debug", "Development", "Shipping" があり、これに対応するのは
"PPBC_DebugGame", "PPBC_Development", "PPBC_Shipping" となる(確認したのはwindowsなのでOSXとかなら変わるかも)

この設定を見る関数をFunctionLibrary辺りに作る

.h
UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Configuration")
static void GetBuildConfiguration(FString& Type);
 
.cpp
void UBlueprintFunctionLibraryCpp1::GetBuildConfiguration(FString& Type)
{
	GConfig->GetString(
		TEXT("/Script/UnrealEd.ProjectPackagingSettings"),
		TEXT("BuildConfiguration"),
		Type,
		GGameIni
	);
}
エディタでマクロ組む

あとはエディタのMacroLibraryでこのようなマクロを作成すると、IFDEBUGもどきノードができる

https://embed.gyazo.com/4f36c3e9e3e01c664894a07fc6ec525f.png

SwitchOnStringノードはAdd pinで、文字列と一致した場合はこっちに進むみたいな処理を作れる