妹でもわかるUnrealEngine4

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

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

C言語の+=や++をブループリントで作る

「いままで妹に教えるのに必要になった範囲でしかUE4使ってなかったんだけど、自分でゲームを作っていると色々気になるところが出てきたんだけど……得点を増やすところってどういう風に書いてる?」

妹「どんなって言われてもな。こんなかんじ?」

f:id:una_unagi:20151005231822p:plain

「スコアをGETして、スコアをSETしてって、なるよね。でもそんなめんどくさいことはしたくなかったんだよ」

妹「したくないといわれても、そういうものなのでは?」

「でもこれがC++だったら スコア+=300 とか簡単に書けるし。かといってここだけC++で書くというほどでもないから、なんか良い方法ないかと考えてみたんだよ。そして注目したのがこれ」

f:id:una_unagi:20151005230701p:plain

「この部分がGETノードの代わりになってるから、SETノードだけでべつに足りるんじゃないかと思ってやってみたら、いまのところ正常に動いてる」

妹「えー、でもこれだとSETした後の数字をSETする前にもってくることになって、なんだか順番がグルグルしてしまうのでは?」

「ヒモはグルグルしてるように見えるけど、実際はこの右下の出力ピンって、必要になったタイミングでGETされるだけみたいなんだよ。つまりこう書いても同じように動く」

f:id:una_unagi:20151005232050p:plain

妹「これはなんとも不思議な。そしたらもうGETノードは要らないってこと?」

「読み取りだけならGETノードがいいよ。要らないピンあってもしょうがないし、見た目もコンパクトになる。ただ変数の値を増やすとか減らすとかで、GETとSETと両方セットで使う場合、SETノードだけでいいんじゃないかと思う」

妹「こんなんで大丈夫なのかな?」

「それはわからない」

妹「大丈夫じゃないのか」

「もともとのSETノードには出力ピンがなかったみたいで、古い画面写真とか見てるとピンが載ってない。とすると途中で追加したんだと思うけど、SETした数字をそのまま返すだけならあんまり意味ない。入力ピンに繋いでる線があるんだから、そこからもう1本引っ張ってくれば済む話だし。わざわざ追加した理由を考えると、こういう使い方は想定してると思う。でも大丈夫という証拠は見つけられなかった」

妹「うーん、ノードは減らせるんだろうけど、でもどうしても見た目がグルグルして見えるね」

「+=ノードみたいなのがあった方がいいのかなとは思うけど、それはそれで関数の戻り値とかSET不能な値と区別しないといけないし、関数を作れば1回で済むけど変数ごとに作るの大変だし、今のところはこの方法が一番良さそうな気がする」

10/06
1を足すだけの++に関してはIncrementノードを使うといいという話です