UnrealEngine4で2Dゲームを作ろう! その6 C++でデバッグプリント
使い方は、ドキュメントの以下の場所にあります。
ドキュメントへの補足です。
UE_LOG/UE_CLOGマクロ
printf/coutやOutputDebugPrint的に使えるデバッグプリントマクロです。このマクロで出力した文字列は、UE4エディタの出力ログパネルに表示されます。
UE_LOGマクロのフォーマットは、
UE_LOG(カテゴリ, レベル, 出力文字列);
UE_CLOG(論理, カテゴリ, レベル, 出力文字列); // 論理がtrueの時だけログが出力される
となっています。
UE_(C)LOGマクロで出力した文字列はログファイルにも書き出されます。
カテゴリ
UE4が定義しているものに加えて自前でも作ることができます。
UE4のコードを見ると、必要に応じて、その場で作る方針みたいなので、基本的に自前で作ります。
カテゴリを作るには、DECLARE_LOG_CATEGORY系のマクロを使います。
全部は説明しませんが、よく使うの一つだけ紹介します。DECLARE_LOG_CATEGORY_STATICマクロです。
UE_LOGマクロを使うcppファイルの上の方で、
DECLARE_LOG_CATEGORY_STATIC(LogActor, Display, All);
という風に記述します。
マクロの第一引数がカテゴリ名、第二引数がデフォルトレベル、第三引数はよくわからなかったのですがAllとしておけば大丈夫そうです。
カテゴリを複数のファイルで共有したい時は、他に用意されているマクロを使います。詳しくは「AssertionMacros.h」にありますので見て下さい。
いちいちカテゴリ作るのめんどくせー、って人は、「LogTemp」というカテゴリが用意されてますので、それを使うと良いと思います。
レベル
レベル | 意味 |
---|---|
Fatal | クラッシュする可能性のある致命的なエラー。この場合、デバッグブレイクが発動して処理が止まります。UE_CLOGで使うとログ付きassertとして使えます |
Error | エラー |
Warning | 警告 |
Display | 通常のログ出力 |
Log | ログファイルへの書き出しのみ |
Verbose | 詳細な内容をログファイルに出力 |
VeryVerbose | とても詳細な内容をログファイルに出力 |
出力文字列
出力文字列部分は、printfの引数とほぼ同等の整形フォーマットを記述することができます。なお、元になる文字列はTEXTマクロで覆う必要があります。
まとめると、
UE_LOG(LogActor, Display, TEXT("合計: %d"), sum);
こんな感じで書くことができます。