妹でもわかるUnrealEngine4

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

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

継承したブループリントの関数から、親クラスの関数を呼び出す

「ブループリント関数のオーバーライドをやった時に、親の関数呼び出す方法がないのは変だなと思ってたんだけど、その方法が見つかったよ」

前のやつ
imoue.hatenablog.com

f:id:una_unagi:20160202223344j:plain

「関数やイベントのブループリントで、最初に出てくる入り口用のノードを右クリックすることで、"親関数に呼び出しを追加"というメニュー項目が出てくる。これを押すと[親:ホニャララ]っていうノードが出てくる。このノードに実行ピンをつなげると、親のクラスで作った関数が呼び出せる。」

妹「ホニャララっていう人ひさしぶりに見た」

「他に言いようが……で、この内容は公式サイトにも書いてあった」

docs.unrealengine.com

妹「これはどこにつなぐの?」

「それは都合に合わせて。親の関数を呼び出す前に設定したい変数があるならそっちを先にするし、親の関数を実行した前提でやりたいことは後回しになるし、どっちでもいいようなのはどっちでもいい。関数を定義しない場合は自動的に親のを呼び出すから、何もしなければ親関数を呼び出すノードだけあるような状態になってる」

妹「うーん、でも親ってたくさんあるかもしれないよね?  親じゃなくておじいさん? 先祖?」

「なんていうんだろ。孫クラスという言い方はあるんだけど、おじいさんクラスって聞かないかも。とりあえず順番としては子の世代の方から1代ずつにさかのぼっていく。まず直接の親のを呼び出して。親からさらに親を呼び出してれば、おじいさんに行く。先祖のをピンポイントで呼び出すことも出来なさそう」

妹「結局これは何に使えばいいの?」

「同じような処理を1つのクラスにまとめて、例えばオーバーラップイベンドに共通の仕掛けを入れたとして、でも継承した先でも別の用途でオーバーラップを使いたいということがある。その場合普通にオーバーラップイベントを作ると、親のが完全に無効化されてしまう。前後にノードを追加するか、ブランチノードで場合によって変えるのか、わざとそのままにするのか、そこは色んなパターンがあるけど。クラスの継承を使っていくなら多分必要になる考え方」