リファレンス渡しに設定した時の動作(マクロ・イベント・関数の場合)
「昨日の実験について、マクロの場合はリファレンス渡しに設定しなくても動くんじゃないか? という情報が寄せられた。実際試してみたら、設定しなくても普通に動いた。そこでそれぞれのケースについてリファレンス渡しの設定をしたりしなかったりするとどうなるのか? 少し実験をしてみた」
忙しい人用のまとめ
UE4.18.3 で動作確認
マクロ
設定してもしなくても基本的には同じ
マクロにつないだピンが変数じゃない場合はエラーがでる
イベント
設定しない場合=エラーは出ないけど、参照してる変数に変化がない
設定した場合=エラーが出てコンパイルできない
リファレンス渡し自体が不可能?
関数
設定しない場合=エラーは出ないけど、参照してる変数に変化がない
設定した場合=正常に動作する
設定しないとダメ
マクロの場合
リファレンス渡しのチェックボックスをオフにしてても、正常に動作するマクロになる
でもリファレンス渡しが必要なことには違いないので、変数のピンじゃなく値を設定するとエラーになる
※見てもすぐにはわかりにくいエラーになる
じゃあリファレンス渡しにした場合のエラーはどうなるのか?
と思ったけど一緒
ただ値の設定欄は出ないし、変数の接続が必要だということはわかりやすい
「マクロの場合は原理的にそのままピンをつなぐのと一緒なんじゃないかという意見を聞いたけど、たしかにそんな感じの動作をしてるように見える。マクロ単体では何も言われないけど、実際に変数じゃないものをつないだ時点でエラーがでる」
イベントの場合
リファレンス渡しがそもそも設定できない
設定しない場合エラーはでないけど、数字も0のまま増えなかった
「イベントの場合はなんというか、リファレンス渡しの仕組み自体が作れないような気がする。設定項目としてはあるけど、それにチェックいれるとエラーになっちゃうし。何か別のとこに問題があるのかもしれないけど」
関数の場合
リファレンス渡しに設定してない場合の動作はイベントの場合と同じ。
ただリファレンス渡しに設定することはできる。
設定した場合、関数ノードに変数をつながないと、わかりやすいエラーが出る。
「これは一番しっくりくる動作だった。リファレンス渡しに設定すればちゃんと動作するし、エラーメッセージもわかりやすい」