【UE4】BP&C++でログ表示

開発に欠かせないものといえばデバッグデバッグの基本といえばログ表示!

ということで、UE4におけるログ表示機能を紹介します。

UE4では様々な方法でログを出力可能ですが、
"Blueprint"でも、"C++"でも出力できます。

出力先は大きく分けて、"OutputLog"に出力するか"スクリーン上"に出力するかです。

f:id:shuntaendo:20170717035841p:plain

OutputLogとスクリーン上どちらにも表示可能なノードです。

OutputLogタブが表示されていない場合は"Window"タブ → "Developer Tools" → "Output Log"から表示可能です。

f:id:shuntaendo:20170717040910p:plain:w200


ポピュラーなノードなのでパラメータ説明だけ。

パラメータ名 説明
In String ログ文
Print to Screen スクリーン上に表示するか
Print to Log OutputLogに表示するか
Text Color 文字色
Duration スクリーン上に表示する秒数

f:id:shuntaendo:20170717042510p:plain:h100  f:id:shuntaendo:20170717043338j:plain:h100


また、Text型版のPrintTextというノードもあります。こちら↓で紹介しました。
shuntaendo.hatenablog.com



UE_LOG

次は、UE_LOGというマクロです。C++からOutputlogのみにログ出力できます。

UE_LOG(LogTemp, Display, TEXT("ログです。"));
UE_LOG(LogTemp, Warning, TEXT("危ないかも..."));
UE_LOG(LogTemp, Error,	 TEXT("ダメです。"));

f:id:shuntaendo:20171029174359p:plain

Category(LogTempとかLogWorld)のVerbosity(WarningとかError)によって、そのCategoryを使った時にどのVerbosityまでOutputlogに出力されるか決まっています。
PrintStringのScreen to LogもVerbosityを変更しています。

カテゴリ

カテゴリは自分で定義して独自のカテゴリを追加できます。

// 単一ファイル用カテゴリ
// .cpp で定義
DEFINE_LOG_CATEGORY_STATIC(MyCategory, Warning, All);

.

// 複数ファイル用カテゴリ
// .h で定義
DECLARE_LOG_CATEGORY_EXTERN(MyCategory, Warning, All);

// .cpp で定義
DEFINE_LOG_CATEGORY(MyCategory);

.

Verbosity(ログのレベル)の種類

・Fatal
・Error
・Warning
・Display
・Log
・Verbose
・VeryVerbose
・All(実態はVeryVerbose)

Verbose 以下はコンソールには表示されず、ログファイルにのみ残ります。



AddOnScreenDebugMessage

最後にAddOnScreenDebugMessage関数です。UEngineから呼び出せる関数でC++からスクリーン上にログ出力することができ、自由度も高いです。

AddOnScreenDebugMessage(int32 Key, float TimeToDisplay, FColor DisplayColor, const FString& DebugMessage, bool bNewerOnTop, const FVector2D& TextScale)

.

パラメータ名 説明
Key -1以外を指定すると同じKeyが指定されたAddOnScreenDebugMessage関数が呼ばれると、表示古い方のログに上書きされます。
TimeToDisplay スクリーン上に表示する秒数
DisplayColor 文字色
DebugMessage ログ文
bNewerOnTop Trueで且つKeyが-1の時、一番上に表示されます。 f:id:shuntaendo:20171029184137p:plain
TextScale 文字の大きさ。荒くなりますが大きいログも出せます。

docs.unrealengine.com


開発の手助けになれば幸いです。


UE Version : 4.17