“BP内の処理・数値を把握するのに便利な機能を紹介”
執筆: “S.K”
はじめに
初めまして。
株式会社ORENDA WORLDでエンジニアをしております、S.Kと申します。
今回はUnrealEngine5のBlueprintにおける、デバッグに使える機能の紹介をしようと思います。
・どこのノードまで処理が動いていて、どこから先が動いていないか特定したい
・変数が正しく代入されているか知りたい
・数値を可視化して、3D空間上に表示したい
など、作成した処理が思った通りに動いていない時や、思った通りの値が得られているか可視化したい時に役立つ機能がBlueprintには複数用意されています。
ノードベースプログラミングであるため、処理の流れがプログラミング初心者にもわかりやすいことが特徴のUE Blueprintですが、これから紹介する機能を活用することでより処理内容を把握しやすくなります。
この記事で使用する環境

- Unreal Engine 5.3.2
- ブループリントプロジェクト
本記事ではUE5.3.2を使用していますが、基本的にUE5であれば内容は同一です。
UE4でも基本的には同一の機能が用意されていますが、UI上の配置が異なるため、注意が必要です。
Print Stringノード
ここからはデバッグに使用できる代表的な機能を紹介していきます。

画面上でリアルタイムに値を確認したい場合、最もベーシックなものがこの手法です。
Print Stringノードは、名前の通りString(文字列)を表示する機能です。
In Stringに接続された文字列を、スクリーン上およびコンソール上に出力します。

String型の入力が必要ですが、Blueprint上では型が違っていても自動的に変換ノードを挟んでくれるので、実質ほぼすべての値を表示することが可能です。
上の画像では、Float型の値をIn Stringに接続しているため、String型へ変換されています。

先程の処理を実行してみると、このような形で出力されます。
ここではVehicleSampleのブレーキランプを制御している関数にPrint Stringノードを接続したため、ブレーキを押す/離す操作をした際にプリントが実行されています。
ランプが点灯した時は値が200.0、消灯するときは4.0になっていることが確認できます。

設定項目は以下の通りです。
- In String
出力する文字列を入力・接続します。 - Print to Screen
スクリーン上に値を表示するか否か。
ログ上のみに出力されればよい場合、チェックを外しておくと画面上にはプリントされなくなります。 - Print to Log
コンソールログ上に値を表示するか否か。
画面上にのみ表示されればよい場合、チェックを外しておくとログの肥大化が避けられます。
Tickで実行するなどしてログの行数が増えすぎると動作が重くなるため、適宜設定することをおすすめします。 - Text Color
文字色の設定をします。 - Duration
値をスクリーン上に表示する秒数です。
例えばリアルタイムに更新するもの(車のスピードを表示するなどの、UI的な使い方)の場合、デフォルトの2秒だと画像のように大量のテキストが表示されてしまいます。
このような場合、Durationを0にしておくと1Tick分の数値のみプリントされるため、無駄にプリント結果が残らずに使うことができます。
- Key
同じキーが指定されているプリント処理が先に実行されている場合、そのプリント結果を上書きします。
ブレークポイント
ブループリント内のノードにブレークポイントを設定することで、そのノードの処理が走った際に動作を一時停止させます。
ブループリント内で特定の処理が動作していない時、どの箇所まで処理が走っているのか、どこで止まっているのかを特定するのに便利な機能です。

ブレークポイントの追加は、ノードを右クリックし、”ブレークポイントの追加”から行うことができます。

ブレークポイントを追加すると、ノード左上に赤い丸がつきます。
画像の処理はインプットIA_Resetが動作した際、現在の座標を取得しZ座標を50加算、Z軸以外の回転を0にすることで車両をリセットするものです。
画像のようにブレークポイントを設定し、ゲーム上でリセット処理を動かしてみましょう。
イベントが実行されると、まずSetActorTransform関数が実行され、このノードのブレークポイントが動作します。
ブレークポイントが動作した瞬間、プレイ中のゲームは一時停止され、画像のように停止した箇所のノードがハイライトされます。
これで、該当箇所の処理は正常に呼び出しされていることが判ります。もしブレークポイントを設定した箇所で動作が止まらなかった場合は、その前の処理にもブレークポイントを設定していくことで、期待通りに動作していない処理を見つけることが可能です。
ブループリントデバッグ

実行中のブループリントアクタ内の変数および処理の流れを可視化できる機能です。
Print Stringノードを使用して変数の内容を表示することでも同じような結果が得られますが、こちらは同一ブループリントのオブジェクトがレベル上に複数存在する場合などでも個別に確認することが可能です。

項目はブループリントエディタの右上、プレイ・停止ボタン等の右側に存在します。
最初は「デバッグオブジェクトが選択されていません」となっているので、一度プレイを開始し、オブジェクトを選択します。

例えばレベル上にSportsCar_Pawnが複数台存在し、この中のSportsCar_Pawn0の処理状況だけを確認したい場合などにこの機能が役立ちます。

画像のように共通のBPを使用しているオブジェクトが複数表示されるため、この中からデバッグしたいオブジェクトを選択します。

プレイ中に動作しているイベントのリンク線がオレンジ色にハイライトされます。
画像ではTickイベントに接続されているSet Angular Damping、次いでInterps to Original Rotationが動作していることが確認できます。
例えば特定のイベントからifノードが接続されていて、True/Falseの分岐が想定どおりに動作しているかなどを確認したい時に本機能を活用するとよいでしょう。

また、ピンにカーソルを合わせるとそのピンに出力されている値を確認することも可能です。
画像ではSelect FloatのReturnピンに3.0が出力されていることが確認できます。
つまり、Select FloatではBが選択されており、Pick Aピンに接続されているIs Moving on GroundからはFalseが出力されていることが確認できます。
Draw Debugノード
3D空間上に点や線を描画し、数値の可視化を行うノード群です。
描画の種類・形状に応じて、以下のように様々な関数が用意されています。
| 関数名 | 描画内容 |
| Draw Debug Arrow | 矢印 |
| Draw Debug Box | ボックス |
| Draw Debug Camera | カメラ形状 |
| Draw Debug Capsule | カプセル |
| Draw Debug Circle | 円 |
| Draw Debug Coordinate System | 座標系(XYZの方向) |
| Draw Debug Cylinder | 円柱 |
| Draw Debug Float History Location | Location値を記録したヒストグラム |
| Draw Debug Float History Transform | Transform値を記録したヒストグラム |
| Draw Debug Frustum | 錐台 |
| Draw Debug Line | ライン |
| Draw Debug Plane | 平面 |
| Draw Debug Point | ポイント |
| Draw Debug Sphere | 球 |
| Draw Debug String | 文字列 |
| DrawDebugCone | 円錐 |
種類が多いので、ここではDraw Debug Sphereを例に紹介します。
車両BPのTickに、以下の画像のような形でDraw Debug Sphereと車両メッシュの座標を接続します。

Radius(半径)が500(cm)、ラインカラーが赤、Thickness(線の太さ)を2.0に設定しています。この状態で実行すると、以下の画像のように車両を中心として半径5mの球体が描画されます。

例えば車両から半径5m以内に特定のオブジェクトが存在する場合に処理を行うなど、距離ベースで行っている処理があった場合、このデバッグ表示によって可視化を行うことが可能です。
その他のDraw Debug系関数も、工夫次第で様々な用途に活用することが可能です。
まとめ
本記事では、Unreal EngineのBlueprintデバッグで役立つ機能を紹介しました。
これらは、複雑な処理の流れを効率的に理解し、問題を特定・解決するために欠かせないツールです。
Unreal EngineのBlueprintは、ノードベースのビジュアルスクリプティングシステムで、C++のようなコードベースの言語よりも処理の流れを視覚的に理解しやすいのが大きな利点です。この利点を最大限に活かせば、処理内容をより詳しく把握でき、デバッグ作業を大幅に効率化できます。
紹介したデバッグ機能は、以下のような様々なケースで役立つはずです。
- 機能開発時: 新しい機能を実装する際、期待通りに動いているか、予期せぬ挙動がないかを確認するのに、デバッグ機能は強力な手助けになります。変数の値の変化を追ったり、特定のノードが実行されているかを確認したりすることで、開発中の機能の品質向上に貢献します。
- バグ修正時: 発生したバグの原因を特定する上で、デバッグ機能は最も重要なツールの一つです。処理がどの地点で、どのような条件で異常な状態に陥ったのかを視覚的に追うことで、問題の根本原因を素早く特定し、修正できます。ステップ実行やブレークポイントの設定は、特に複雑なバグの解析に有効です。
- 既存プロジェクトの学習時: 他の開発者が作ったBlueprintや、しばらく触れていなかった自分のプロジェクトの内容を理解する際にも、デバッグ機能は非常に役立ちます。処理の実行パスをたどり、各ノードの役割やデータの流れを追うことで、プロジェクト全体の構造とロジックを効率的に把握できます。これにより、既存コードの改修や機能追加をよりスムーズに行えるでしょう。
これらのデバッグ機能を積極的に活用することで、Unreal Engineを使った開発プロセス全体の効率性と品質を向上させることができます。ぜひ、日々の開発業務に取り入れてみてください。