読者です 読者をやめる 読者になる 読者になる

GameProgrammar's Night

ゲームプログラム系の覚え書き

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);

こんな感じで書くことができます。