UE4 引数として関数へ渡した変数の中身を書き換える(リファレンス渡し)(Set By-Ref Var)
関数の引数に値を渡す場合に、
関数の内部でその引数の値を変更したい場合があります。
Intなどの変数単体を引数で渡した場合、デフォルト状態では値を変更することはできません。
これを変更できるようにするため「リファレンス渡し」をします。
ここらへんのドキュメントになります。
・関数のリファレンス渡しの変数に値をセットする方法
https://answers.unrealengine.com/questions/393675/%E9%96%A2%E6%95%B0%E3%81%AE%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%E6%B8%A1%E3%81%97%E3%81%AE%E5%A4%89%E6%95%B0%E3%81%AB%E5%80%A4%E3%82%92%E3%82%BB%E3%83%83%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html?childToView=393691#answer-393691
まず、引数を設定するとデフォルト状態ではこんな感じになります。

この状態だと「Value」に対しては値を書き換えることができません。
そこで、引数の設定で「リファレンス渡し」にチェックをいれます。

そうするとこんな感じで引数のアイコンがまる形からひし形に変わります。

これがリファレンスとして渡っている状態になります。
このリファレンス渡し状態の引数に対しては
「Set By-Ref Var」ノードを使うことで値をセットすることができます。

ノードはこんな感じになります。

デフォルト状態だと型が決まっていません。
ノードをつなぐことでその変数の型に変化します。

Int 型だとこんな感じになります。
といった感じで関数の引数の値を変更する場合は
こんな感じになります。

返り値を外で受け取ったほうが良いような気がしないでもないですが
こういう方法で関数の中で値を書き換えることも可能のようです。
関数の内部でその引数の値を変更したい場合があります。
Intなどの変数単体を引数で渡した場合、デフォルト状態では値を変更することはできません。
これを変更できるようにするため「リファレンス渡し」をします。
ここらへんのドキュメントになります。
・関数のリファレンス渡しの変数に値をセットする方法
https://answers.unrealengine.com/questions/393675/%E9%96%A2%E6%95%B0%E3%81%AE%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%E6%B8%A1%E3%81%97%E3%81%AE%E5%A4%89%E6%95%B0%E3%81%AB%E5%80%A4%E3%82%92%E3%82%BB%E3%83%83%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html?childToView=393691#answer-393691
まず、引数を設定するとデフォルト状態ではこんな感じになります。

この状態だと「Value」に対しては値を書き換えることができません。
そこで、引数の設定で「リファレンス渡し」にチェックをいれます。

そうするとこんな感じで引数のアイコンがまる形からひし形に変わります。

これがリファレンスとして渡っている状態になります。
このリファレンス渡し状態の引数に対しては
「Set By-Ref Var」ノードを使うことで値をセットすることができます。

ノードはこんな感じになります。

デフォルト状態だと型が決まっていません。
ノードをつなぐことでその変数の型に変化します。

Int 型だとこんな感じになります。
といった感じで関数の引数の値を変更する場合は
こんな感じになります。

返り値を外で受け取ったほうが良いような気がしないでもないですが
こういう方法で関数の中で値を書き換えることも可能のようです。
| UE4 | 14:31 | comments:0 | trackbacks:0 | TOP↑