ブループリントのデバッグのサンプル

ブループリントのデバッグ方法について説明します。

Windows
MacOS
Linux

ブループリントで作業する場合、意図したとおりに機能しないことがあるかもしれません。こうした問題を診断するために、ブループリント ビジュアル スクリプティング ツールには、独自のデバッガがあり、その中で最も強力な機能はグラフのノードに ブレークポイント を追加するというものです。グラフのノードにブレークポイントを追加することで、エディタでゲームを通常通りに再生 (またはシミュレーション) し、追加したブレークポイントに到達するとゲームが停止し、グラフ内のノードにジャンプし、どこで問題が発生しているかを確認するためにスクリプトをステップスルーすることができます。

もうひとつの役立つデバッグ機能としては、ウォッチ値 があり、ブループリントで確認対象の変数 (単数または複数) に Watch とマークを付け、ゲームの実行中にブループリント内で値を確認することができます。これは変数の誤った計算や値をデバッグするために必須です。変数がリアルタイムで変更する間にエラーの発生源を視覚的に確認できるからです。

このページではデバッグ用にブループリントをセットアップする方法と問題診断のための他の方法について学習します。

ブループリントのデバッグに関する詳細は、ブループリントのデバッグ のドキュメントをご覧ください。

デバッグを有効にする

ブループリントのデバッグを有効にするには、最初にレベル内にあるデバッグ対象のブループリントのインスタンスを必ず指定します。

ブループリント内で [Debug Object] ドロップダウン メニューをクリックしてデバッガで確認したいインスタンスを選択します。

DebugHowTo1.png

オブジェクトを選択したら虫眼鏡アイコンをクリックすることでレベル内にあるそのオブジェクトにジャンプできます。

DebugHowTo2.png

別のウィンドウでブループリントを表示した状態でエディタで再生すると、スクリプトが実行されるに従い脈動する「アクティブなワイヤー」があるのがわかります。

上の例ではレベル内に 2 つの炎エフェクトのブループリントがあり、それぞれの鎮火が異なる時間に設定されています。Event Begin PlayDelay ノードを使用して炎とそれに関連するサウンド エフェクトを変数で指定した時間が経過した後に Deactivate (無効化) します。

左のウィンドウを見ると、ゲーム起動時にスクリプトが実行しているのがわかります (脈動しているワイヤーが赤色の Event Begin Play ノードを離れて Delay ノードに入ります)。指定した時間の経過後、脈動が 3 番めのノードに入っていく様子が表示されています。このノードは炎のエフェクトのひとつを無効にするために使用されます。

ブレークポイント

ブレークポイントをブループリント スクリプトに追加するには任意の実行ノード上で右クリックして [Add Breakpoint (ブレークポイントを追加)] を選択します。

DebugHowTo3.png

ブレークポイントのオン、オフを切り替えるためには、右クリック する代わりに、選択したノード上で F9 キーを押すこともできます。

ブレークポイントがノードに追加されると、ノードの左上隅に赤色の円が表示されます。

DebugHowTo4.png

ゲームプレイ中にスクリプトがこのポイントに到達すると、ゲームが一時停止し、このノードがフォーカスされます。

DebugHowTo7.png

また、ブレークポイントを一時的に無効にし、どのノードに以前ブレークポイントが割り当てられていたかを記録することができます。

DebugHowTo6.png

ブレークポイントを無効に設定されたノードは、ノードに到達時にブレークのコマンドを無視します。

[Debug (デバッグ)] メニューには [Disable (無効にする)/Enable (有効にする)] または [Delete All Breakpoints (すべてのブレークポイントを削除)] のオプションもあります。

DebugHowTo18.png

デバッグ制御

ブループリントがブレークポイントに到達すると、ブループリント スクリプトをナビゲーションするための制御オプションが追加で利用可能になります。

DebugHowTo9.png

上の画面の黄色い枠の左から右方向に説明します。[Resume (再開)] はエディタ内でゲームプレイを再開し、デバッグ モードを終了します。[Frame Skip (フレームをスキップ)] を使用すると 1 フレーム単位でゲームプレイを進めることができます。[Stop (停止)] はエディタで再生しているセッションを完全に停止します。[Find Node (ノードを検索)] オプションでは、ゲームプレイ セッションから現在アクティブなノードにジャンプできます。[Step (ステップ)] は現在の実行フロー内で次のノードに進みます。

ノードにブレークポイントを配置すると、スクリプトを前方向にたどるプロセスを開始し、現在の実行フローの終わりに到達すると自動的にゲームプレイに戻ります。

デバッグの一般的なワークフローは、ノードにブレークポイントを追加し、Step を使用してスクリプトをたどり、どこに問題があるかを特定するというものです。後ろ方向に進むことはできません。ブレークポイントを配置する場合はこれを念頭においてください。ブレークポイントは、問題への繋がりが分かるよううに、発生場所の前後に配置するようにします。

ウォッチ値

変数の値を確認するには、変数上で 右クリック し、[Watch this value (この値をウォッチ)] オプションを選択します。

DebugHowTo11.png

変数を確認することを選択すると、変数がアクセスされた任意の場所に虫眼鏡アイコンが表示されます。

DebugHowTo12.png

変数の上にテキストの吹き出しが表示されています。これは、変数の現在の値を示しています。エディタで再生すると、この変数が変更されればテキストの吹き出しにも反映され、変更とその現在値がわかります。変数を確認するオプションは、数値ベースの変数に限定されません。どの変数でも確認対象として設定可能であり、値を確認することができます (以下で示されているように、ブール変数も確認対象に設定し、現在の状態を確認することができます)。

DebugHowTo10.png

[Debug] メニューから [Delete All Watches (すべてのウォッチ値を削除)] することもできます。すべての変数のウォッチの表記を削除します。

DebugHowTo18.png

Blueprint Debugger (ブループリント デバッガー) タブ

ブループリントデバッガー を使用してブループリントをデバッグすることもできます。ブループリントデバッガーWindow / Developer Tools セクションから開くことができます。

DebugHowTo13.png

エディタで再生していないときは、ブループリント デバッガーは割り当てられたウォッチ値やブレークポイントがあれば表示します (以下の黄色いボックス)。

DebugHowTo14.png

複数のブループリントを [Blueprint Debugger] タブに追加することができます。これは、Shift キーを押しながらシーンのアクタをクリックすることで行います。

エディタで再生 (またはシミュレーション) する場合、デバッガの下部のセクションが埋められます。このセクションは、[Execution Trace (トレースを実行)] です。

DebugHowTo15.png

これはすべての実行されたコマンドを発行順に並べたログです (一番上が最近のものになります)。

ブレークポイントに到達すると、このページで説明した デバッグ制御 にブループリント デバッガ タブから直接アクセスできます。

コンパイル エラー

ブループリントをコンパイルしようとするときに、コンパイル エラー (以下の黄色いボックス) になる理由が数多くあります。

DebugHowTo19.png

コンパイル エラーが発生し、ゲームをプレイしようとすると以下のようなメッセージが表示されます。

DebugHowTo23.png

エラーがあるブループリントはレベル エディタ ビューポートにも反映されます。

DebugHowTo24.png

この場合、何が起こっているかを判断するためのデバッグ手段をうまく使用できないかもしれません。エラーが見つかったコンパイルしたブループリント内で、その原因となっているノードでどこで問題が発生しているかを特定するのに役立つ説明が表示されます。

DebugHowTo20.png

エラー発生理由の詳細について [Compiler Results (コンパイル結果)] ウィンドウを参照することもできます。

DebugHowTo21.png

エラーがあると [Compiler Results] ウィンドウが自動的にポップアップします。虫眼鏡をクリックすれば、エラー発生場所と問題となっているノードにジャンプします。問題解決を支援するためにエラーのテキスト説明も表示されます。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback