妹でもわかるUnrealEngine4

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

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

UE4.17の関数のデフォルト値

「4.17で関数のデフォルト値が使えるようになるという話と、今までも使えたのでは? という話と両方を耳にしたので、どういう変更が加わったのか調べてみた」

f:id:una_unagi:20170807225637p:plain

4.16の場合
・デフォルト値はどんな型でも全部文字で入力(入力しても意味がなさそうな型も多々ある)
・ノードを置いた時に、最初からデフォルト値が入っている
・あとで関数側のデフォルト値を変更しても、配置済みノードの方は一緒

f:id:una_unagi:20170807225644p:plain

4.17の画面
・デフォルト値の欄が変数の型ごとに違う(デフォルト値が使えない型だと欄が出ない)
・ノードを置いた時に、最初からデフォルト値が入っている(これは同じ)
・関数側のデフォルト値を変更すると、配置済みノードも一緒に変わる
・ピンを右クリックするとデフォルト値に戻すボタンが出て来る

「関数のノードを作った時にデフォルト値を入れる欄は今までもあったんだけど、それが改良されたというか、一般的なプログラミングでの関数のデフォルト値に近くなった感じがする」

妹「関数だけなの?」

「試したところでは、カスタムイベントもマクロも同じような動作だった」

妹「そういうになると何が変わるんだろ」

「デフォルト値を変えるだけで、同じノードを使ってる箇所を一気に置き換えられるのは利点。逆に変えるつもりがないとこまで変わってしまう可能性はあるけど」

妹「自分で変更したところとかは?」

「ノード上のパラメータを、デフォルト値と違う数字とかに変更した場合は、デフォルト値と連動しなくなる。でもたまたま同じ値になった場合でも、デフォルト値とみなされる。

妹「たまたま同じになるというのは」

「例えばBoolean型で、Trueがデフォルト値だったとして、1個だけFalseに変えておくとする。その状態でデフォルト値をFalseに変更すると、全部Falseになる。さらにそのあとでもう1度デフォルト値をTrueに戻すと、全部Trueになる」

妹「むずかしいことをおっしゃる」

「なんというか、自分で変更したパラメータかどうかわかるようなフラグがないみたいなんだよね。デフォルト値と同じなら変更してない、違うなら変更したという風に判断する。これはアクターのパラメータとかも同じだけど。基本的には便利になる変更だと思うけど、いつの間にか設定値が消えるというトラブルはありえる」

f:id:una_unagi:20170807232425p:plain

「安全を重視するなら、ノード上に直接書かずにMakeLiteralノードを使う方法がある。ピンをつないだ先にあるMakeLiteralノードの値が最優先だから、デフォルト値がどうなろうが関係なく同じパラメータになる」