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

妹でもわかるUnrealEngine4

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

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

配列の範囲を超えた場合の見分け方

UE4.11 ブループリント

f:id:una_unagi:20160523232704p:plain
f:id:una_unagi:20160523234358p:plain

「配列って、範囲外からGETしようとすると初期値のnullとかになるんだけど、これ整数型の配列だったら見分けつかないよなあ……と思って実験してみたところ。やっぱり見分けはつかなかった。元々0が入ってる場合と、読み出しに失敗して0になった場合と区別出来ない。ただ黄色で警告は出るから、そこを見ればわかる」

妹「前に言ってた、エラーが起きるとその場で止まってくれるやつは?」

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

「これエラーじゃなくて警告だから、発生箇所素通りされた」

妹「そうすると警告を見てないといけないのか。でも実際問題わたしが作ってるのとか警告多すぎて、何が何やらさっぱり」

「それはそれでなんとかした方がいいと思うけど……取り合えずそうなる可能性があるところでは、LengthかLastIndexを使って範囲内に収まってるか確認する。可能性があると気づいてないとこで起きるのがバグなんだけど。もちろん0以下の数字にもならないように」

妹「配列に0を入れない! って決めちゃってもいいのでは? そしたら0の時はなんか変だってわかるし」

「実際そういう感じのやり方もあるよ。最初に9999とか-1とか入れて、その後も0は入れないようにする方法。でもその初期値を入れるのを忘れるかもしれないし、他の数字ならともかく0が使えないのはちょっと痛い。やっぱり長さチェックで対応するのが無難だと思う」