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

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

ブループリントでエラーが起きた時にすぐ止める設定について

f:id:una_unagi:20160508230747p:plain

「とあるプロジェクトデータの中身を確認してたんだけど、どうもゲームが終わった後にこういうエラーが出てきて、同じようにクリアしてるのに、エラーの数が多かったり、全然なかったりする、という事態が起きた。このままだとデバッグするのは難しい」

妹「エラーの種類と場所はそこに書いてあるんじゃないの?」

「AccessedNoneということだから、どこかの変数にNullが入ってるんだろうというのはわかる。Nullを受け取ったノードも。でもそれだけじゃいつNullが混入したのかわからないんだよ。あとどういうプレイ状況の時に起きてるのか」

f:id:una_unagi:20160508231741p:plain
f:id:una_unagi:20160508231941p:plain

「で、そういう場合には、エディタの環境設定にある"BlueprintBreakOnExceptions"設定を使うのがいい。AccessedNoneが発生すると、発生した瞬間にゲームが停止する。エラーが起きたノードにブレークポイントを設置していた場合とほぼ同じ扱いになる。」

妹「元々場所はわかってたんだから、ブレークポイントを置けばいいのでは?」

「そうすると正常に動作してる時にも止まってしまうので、それはそれでデバッグしにくい。エラーが起きる時とそうでない時の両方を確認したい場合はブレークポイントを置く」

f:id:una_unagi:20160508231949p:plain

「ちなみにこっちがブレークポイントを置いた場合。エラーが起きてない時だから、ピンの上にカーソルを置くとNullでない値が出てくる」

妹「AccessedNoneとその他の例外的なイベントのトラップって書いてあるけど、その他にはどういうのに使えるの?」

「それがちょっとわからない。普通例外と言って代表的なのは、以前書いたゼロ除算なんだけど、UE4ではこれを例外やエラーとして扱ってないんだよね。ちょっと変だよっていう警告止まりだから。とりあえず黄色じゃなく赤いエラーメッセージエラーが出てる場合は効くんじゃないかと思う」

関連記事
imoue.hatenablog.com