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

妹でもわかるUnrealEngine4

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

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

配列のInsertとSetArrayElemの違い

ブループリント コンピューター全般 ノード解説

妹「配列のInsertとSetArrayElemって一体何が違うのかと思って、マニュアル見たけど全然わからなくて、色々やってみた結果、Insertだとそれより後ろやつが1つずつずれていって、SeArrayElemというのだと上書きすることがわかった」

「うーん、それはマニュアルに書いてあると思うんけど……」

docs.unrealengine.com

妹「いやどう見ても書いてないでしょ。変数値を挿入しますって書いてるけど、挿入したらどうなるのかって話が全然書いてない」

「コンピューター関連で"挿入"という単語が出てきた場合は、だいたいそういう意味になるんだよ。つまりその場所に新しい物を追加して、それより後ろのやつはスライドする。テキストの編集とかも同じ。SetArrayElemみたいなのは"上書き"って言って区別する」

妹「それは挿入だけじゃ意味わかんないよ……新しい何かを追加するってのはわかるけど、元々あったのは前にずらしてもいいんだし」

「前にずらすと先頭のindex0番の人が-1番になっちゃうから、後ろにずらすんじゃないかな。でもまあそれも一種のコンピューター用語だね。あと"追加"っていうのも別の意味があって、挿入とも上書きとも違う、一番後ろに付け足すというのを表してる。UE4の配列でいうとADDにあたる」

妹「カタカナだけじゃなくて日本語でもややこしい事になるとは……」

「そのへんは静的配列の方がわかりやすいんだけどね。最初に個数を決めたら変えられないから、値を変更する方法が上書きしかない」

妹「いやそれはそれで困るんだけど……あと配列の途中が無くてもSetArrayElem出来るんだね5までしかなくても、indexに10って指定したら10が出来るような」

「それはUE4の独自仕様っぽい気がする。普通は強制終了するものなんだけど、UE4の場合はなんだかんだでそのまま実行を続けるようになってる。存在しないindexをGETした時も、そのindexにその型の初期値が入ってた事にして続行だし」

妹「親切でいいじゃん」

「プログラムのミスで変なindexが指定されてる場合に見逃す事があるから、エンジン側では強制終了して欲しいという考えもある。もしUE4みたいな処理をするにしたい場合は自分でそういう処理を書けばいいわけだから。UE4の場合はそういう番号を間違えてても動くわけだから、あやしい動きをしてる時は、indexとかをPtintStringして確認したほうがいいと思う」