妹でもわかるUnrealEngine4

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

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

アクターじゃないクラスを生成する方法

「AIの仕組みをUE4のブループリントで実装してみようと思ったんだけど、その前段階としてちょっと困ったことがあったんで、今日はそれのやり方を調査してた」

妹「困ったこと?」

「なんというか、アクターをスポーンさせるのは普通に出来るし、やり方も色んな所に書いてあるんだけど、アクターじゃないクラスを生成する方法というのが謎だった。というか昔のUE4だとブループリントだけじゃ出来なかったらしい」

f:id:una_unagi:20170309233419p:plain

「クラス作成の時に、ActorやActorを継承したクラスじゃなく、Objectを継承すると、アクターじゃないクラスは作れる」

妹「それスポーンさせたらいいのでは?」

「Actor以外のクラスにはスポーンノード使えないんだよ。Objectは位置とか回転とかも持ってないし、BeginPlayとかTickとかのイベントもないから、無理にActorとして扱おうとしてもバグってしまう」

f:id:una_unagi:20170309233727p:plain
f:id:una_unagi:20170309233731p:plain

「それでどうやらクラスからオブジェクトを構成というノードを使えば、スポーンノードの代わりに使えるらしいことがわかった。紫のピンで、どのクラスの実体(インスタンス)を作るかを指定出来る」

f:id:una_unagi:20170309233923p:plain
f:id:una_unagi:20170309233930p:plain

「無事にカスタムイベントの呼び出しが出来た。ので、とりあえず成功してるみたい」

妹「クラスを指定するのはわかるけど、Outerというのはいったい?」

「そこはわからない。(なし)のままだとコンパイル出来ないけど、なにか入れればコンパイル出来るし、結果も同じ。多分それが必要な状況にならなければ、なんでも良さそうな気がする。よくわからんけど」

妹「曖昧だ……というか見えないアクターみたいな物なんだったら、そもそも見えないアクターとして作っちゃえばいいのでは? 非表示のアクターとか色々あったし」

「それでもいいんだけど、明らかにActorの機能を必要としてないのに、位置を指定してスポーンとか、どうも無駄がある。あとアクターだとエディタのアウトライナに出てきちゃうという問題もある。数が少ない場合にはこのへんの欠点は目立たないから、アクターとして作っても問題はないはず」

※兄が寝違えたので翌日分の記事はお休みします