C言語の+=や++をブループリントで作る
「いままで妹に教えるのに必要になった範囲でしかUE4使ってなかったんだけど、自分でゲームを作っていると色々気になるところが出てきたんだけど……得点を増やすところってどういう風に書いてる?」
妹「どんなって言われてもな。こんなかんじ?」
「スコアをGETして、スコアをSETしてって、なるよね。でもそんなめんどくさいことはしたくなかったんだよ」
妹「したくないといわれても、そういうものなのでは?」
「でもこれがC++だったら スコア+=300 とか簡単に書けるし。かといってここだけC++で書くというほどでもないから、なんか良い方法ないかと考えてみたんだよ。そして注目したのがこれ」
「この部分がGETノードの代わりになってるから、SETノードだけでべつに足りるんじゃないかと思ってやってみたら、いまのところ正常に動いてる」
妹「えー、でもこれだとSETした後の数字をSETする前にもってくることになって、なんだか順番がグルグルしてしまうのでは?」
「ヒモはグルグルしてるように見えるけど、実際はこの右下の出力ピンって、必要になったタイミングでGETされるだけみたいなんだよ。つまりこう書いても同じように動く」
妹「これはなんとも不思議な。そしたらもうGETノードは要らないってこと?」
「読み取りだけならGETノードがいいよ。要らないピンあってもしょうがないし、見た目もコンパクトになる。ただ変数の値を増やすとか減らすとかで、GETとSETと両方セットで使う場合、SETノードだけでいいんじゃないかと思う」
妹「こんなんで大丈夫なのかな?」
「それはわからない」
妹「大丈夫じゃないのか」
「もともとのSETノードには出力ピンがなかったみたいで、古い画面写真とか見てるとピンが載ってない。とすると途中で追加したんだと思うけど、SETした数字をそのまま返すだけならあんまり意味ない。入力ピンに繋いでる線があるんだから、そこからもう1本引っ張ってくれば済む話だし。わざわざ追加した理由を考えると、こういう使い方は想定してると思う。でも大丈夫という証拠は見つけられなかった」
妹「うーん、ノードは減らせるんだろうけど、でもどうしても見た目がグルグルして見えるね」
「+=ノードみたいなのがあった方がいいのかなとは思うけど、それはそれで関数の戻り値とかSET不能な値と区別しないといけないし、関数を作れば1回で済むけど変数ごとに作るの大変だし、今のところはこの方法が一番良さそうな気がする」
10/06
1を足すだけの++に関してはIncrementノードを使うといいという話です