俺に解るように説明する "Unreal.Engine.4" 入門+

UnrealEngine4とかチュートリアルとか入門とか

【日本語】 UE4 ホッケーゲーム part.24 ゴールと得点管理4 (breakpoint でデバグ)【チュートリアル】

「なんでやねん」を「あ~、そういうことだったのか」に変え、欠陥を修正していこう。そのためには、プログラムの流れを把握する必要がある。その一つ方法として、あっちこっちに [Print String] を付け、ゲームを止めずに流れの確認をする方法がある。[Print String] は「ココに来たよ~」ということを教えてくれるからな。

f:id:ore2wakaru:20160424215403j:plain

俺は、ゲームを止めずに確認できるこの方法が好きだが、ログがすぐに流れてしまうのが欠点だ。えっと~、と見てるうちにドンドン書いては消えてゆく。ゆっくり確認していられない。そこで、他の方法として、一歩一歩確実に確認する方法があるのだが、それが、

----------

ブレークポイント(breakpoint)を利用する方法だ。非常に簡単なので、実際に使いながら、やり方を覚えよう。

  1. 「ココに来たよ~」って知りたいノードの上で右クリ
  2. メニューが出たら、[Add breakpoint] を選択
  3. 赤い丸が付いてブレークポイントが付いたことを教えてくれる

f:id:ore2wakaru:20160424223034j:plain

これだけ。これで、いつもの様にコンパイルしてプレイすると、ここに処理が来た時に「ど~ん」とマーク表示して教えてくれる。そしてここからが優れもの。メニューの [Step] を押すことで、次にどこのノードへ処理が移るのか、一つひとつ各駅停車のように停まりながら教えてくれるのだ。親切設計だな、UE4。

※ [OnActorEndOverlap (GoalCom)] を出しておいて下さい。これは、トリガの空間からアクタが出た時に1回、処理をするためのイベントノードです。[~Begin~] は入った時、[~End~] は出た時、それぞれイベントを発生させます。出し方は、[~Begin~] と同様です。アクタを選択しておくことを忘れずに。

f:id:ore2wakaru:20160424225728j:plain

止めたい時は、同じメニューバーにある [Stop] ボタンだ。

----------

何回か試してみると、1ゴールで2回得点が加算される時は、どうも [PakuDasu] の後、一度 [OnActorEndOverlap (GoalCom)] に流れ、つまりパックはトリガの空間を外れているのだが、なぜか再度 [OnActorBeginOverlap (GoalCom)] に流れるようだ。簡単に書くと、[~Begin~] --- [~End~] --- [~Begin~] の流れだ。

どうしたものかと考えたが、どの場合も、[~End~] は1回しか流れないので、イベントノードを [~Begin~] から [~End~] に取り替えることで対応することにしたい。トリガの空間に入った時にすぐ得点を加算しパックを中央へ戻すのではなく、一度空間に入ったものが出た時に一連の処理をするのだ。ゴールの時は、必ずこの空間を通過するので、これで問題ない。

というわけで、こうなる。

f:id:ore2wakaru:20160424232245j:plain

(根本的な解決になったかは疑問だが。)てへへ。これで、どんな時も1ゴールで1得点の加算になるはずだ。試してみてくれ。

今回はここまで。ブレークポイントの利用方法は分かっただろうか。また、ブレークポイントをノードから外すときにも右クリから [Remove breakpoint] を選べばよいだけだ。簡単だったろ。次回は得点表示を [Print String] の簡易表示から、UMGを使ったもうちょと本格的なものものに変更していく。

ではまた。"Save All"。