妹でもわかるUnrealEngine4

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

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

+=をリファレンス渡しで作る

「昨日のやつで++も出来ると思ったんだけど、++はIncrementノードで出来るらしい。というかノードとして出すと++って表示させる。これ出力ピンが付いてたから、新しい値をSETしないと駄目なら使えないノードだなあと思ってたんだけど、実際には++だけでSETまで出来てた。ちゃんと使えるノードだった」

f:id:una_unagi:20151006223725p:plain

f:id:una_unagi:20151006224108p:plain

「こうすると1づつ増えていくから、SETノードは別に必要なかった。そして++はマクロとして作ってあって、これを改造して+=も作れるらしい。ということで作ってみた」

f:id:una_unagi:20151006225324p:plain
f:id:una_unagi:20151006225450p:plain

「関数として作ると関数の呼び出し元を設定するピンが余分だから、マクロとして作った方が良さそうだけど、書き方として同じになる」

妹「リファレンス渡しを設定? 聞いたことないノード。SETノードも無いような気が」

「関数やマクロの中で数字を書き換えようと思うと、その数字がいくつかだけじゃなくて、どの変数なのかを知らないといけない。Actorとかは元々リファレンス型だからいいけど、数字は標準で値渡し。数字だけ教えてどこから来たかは教えない。だから設定を変えて、意図的にリファレンス渡しにしてる。リファレンス渡しを設定というのはそれ用のSETノードみたいなもの」

妹「これは関数とかでしか使わないの? たとえば昨日のグルグル回るやつをこれ使って書き換えるとか」

「それも一応出来るけど、リファレンスを取得するのにGETノードは要るし、SETノードを減らしてリファレンス渡しを設定するノードを増やすわけだから、普通にGETしてSETするのとかわらない」

妹「そうなのか。ノードが減るのはいいしグルグルよりは見やすいけど、マクロとか作るほどじゃないかな」

「標準でついてくるんだったらいいけど、わざわざ作るほどではないかなと思う。+=だけだったら昨日のグルグルでもいいし、SETとGETでもいいし。数字を操作する関数を作るとしても、返り値をSETすれば出来る。リファレンス渡しは上級者向けというか、手間を省くための手間を惜しまない人用かも」

妹「それ余計な手間かかってるんじゃ……」