zer0から始めるプログラミング生活

UE4,unityなどいろいろメモ

【Unreal C++】④Log【UE4】

OutputLogへの出力

「ウィンドウ→デベロッパーツール→アウトプットログ」でウィンドウを出せます。

UE_LOG

UE_LOG(CategoryName, Verbosity, Message);
パラメータ 説明
CategoryName カテゴリ名(カテゴリを自作することも可能、デフォルトはLogTemp)
Verbosity ログレベル(種類)
Message メッセージ



「CategoryName」の自作方法

①ヘッダファイルでDECLARE_LOG_CATEGORY_EXTERN マクロを用いてカテゴリを宣言

DECLARE_LOG_CATEGORY_EXTERN(NewCategoryName, Log, All);

第1引数はカテゴリ名、第2引数はデフォルトのVerbosity、第3引数はコンパイル時で有効化するVerbosityです。


「Verbosity」の種類
Verbosity ログレベル 備考
Fatal 致命的なエラー ログ出力とともにクラッシュ。
Error エラー
Warning 警告
Display ログ(詳細度:最低) 灰色 コンソールとログファイルに出力
Log ログ(詳細度:低) 灰色 ログファイルに出力、アウトプットログに出力可
Verbose ログ(詳細度:高) 灰色 コンソールとログファイルに出力
VeryVerbose ログ(詳細度:最高) 灰色 コンソールとログファイルに出力



Message

文字列の他にフォーマット指定子(%d、%f)などを用いて変数を出力することが可能です。
その際は第4引数に変数を追加します。


Logコマンド

プレイ中に「@」キー(デフォルト)やOutputLogの「Enter Console command」の部分に以下のコマンドを打ち込むことでログカテゴリのVerbosity を変更することが出来ます。

log CategoryName Verbosity 



また、以下のコマンドで各カテゴリのVerbosity の設定を確認出来ます。

log list




画面への出力

AddOnScreenDebugMessage

BPでいうPrintStringです。

GEngine->AddOnScreenDebugMessage(Key, TimeToDisplay, Color, Message);
パラメータ 説明
Key int 同じメッセージが複数回追加されないようにするユニークなキー。一時的なものには-1
TimeToDisplay float 表示する秒数
Color FColor テキストを表示する色
Message FString 表示する文字
追記(2018.1.19)

HMDを被った状態でPrintStringによって表示された文字列を確認しようとすると、確認しづらい箇所に表示されるため位置を変更したかったのですが、ver4.18現在、PrintStringやAddOnScreenDebugMessageの表示位置は左上から変更できないようです。
OutputLogにも残るのでそちらを確認するか、どうしても別の位置に表示させたい場合にはTextRenderやUMGを用いて空間上に表示させるしかないようです。

追記(2018.1.21)

AddOnScreenDebugMessageの第4引数(Message)はFString型なので、他の型からFString型へ変換する必要があります。

変換元の型 変換元の変数 変換
int intValue FString::FromInt(intValue);
float floatValue FString::SanitizeFloat(floatValue);
FVector VectorValue VectorValue.ToString();
FVector2D Vector2DValue Vector2DValue.ToString();
FRotator RotatorValue RotatorValue.ToString();
FLinearColor LinearColorValue LinearColorValue.ToString();