妹でもわかるUnrealEngine4

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

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

インターフェースのinputピン・outputピンを活用する

「ブループリントの中身を見ていて気になったところがあるんだけど」

f:id:una_unagi:20151217235509p:plain
f:id:una_unagi:20151217235627p:plain

「Overlapの時に自機アクターを変数に入れてるみたいだけど、これはインターフェースのinputピンから渡した方がいいのでは?」

妹「インターフェースのinputピン? 見たことはあるけど、別に使わなくても良さそうだったから特に使ってないけど」

「このインターフェースはWボタンを押して何かするアクター全般の処理で使うわけだけど、その場合自機データが入った変数とか、ほぼ確実に使う物だと思うんだよ。もちろん使わなくてもどうとでもなるけど、使った方がスッキリ書ける」

f:id:una_unagi:20151218000002p:plain

妹「こんな感じ?」

「そうそう。そうやっておくと他のアクターを色々増やした時にも、同じ用に自機データが使える。必要なければピンを繋がずにほうっておけばいいわけだから」

妹「こうするとメリットはあるの? デメリットがないんだったら、何もかも全部ピンにつけてしまえばいいような」

「インターフェースを呼び出すにピンの中身を設定するわけだから、今回の場合はSelfをピンにつなぐだけで済んだけど、もっと複雑な場合はその処理の時間もかかるから、使う機会が少ないピンだと処理時間が無駄になって損かもしれない。使う可能性が高い場合か、簡単にデータを用意できる場合にinputピンを使うのが効果的だと思う」

妹「outputピンというのもあるんだけど、これも使えるのかな?」

「それは同じデータを受け取りたい時に使うやつだね。例えば残りHP取得用のoutputピンというのを作れば、そのアクターがどんなクラスだろうが、どんな変数でHPを管理してようが、統一規格でHPを取得できる。全部同じクラスか派生クラスであれば、同じ変数で扱うようにしてもいいけど、それぞれクラスが違っててインターフェースで管理する場合はoutputピンを使うことになる」

妹「……outputピンを付けたり外したりして遊んでたら、コンパイルボタン押した時にクラッシュしたんだけど」

ウィジェットの時もなんかそんなことあったね。ブループリントの場合、outputピンがある場合とない場合とでかなり扱いに違いが出るから、そのノードを使ってる状態でその切り替えをするのは危なそう。いったんそのノードを削除して、設定しなおした状態でインターフェースを使えば大丈夫なはず」