GameProgrammar's Night

ゲームプログラム系の覚え書き

UnrealEngine4で2Dゲームを作ろう! その9 BPでのインスタンス(オブジェクト)生成

 BPで各種インスタンス(オブジェクト)の生成についてのまとめです。
 newとかプログラマになじみのある用語は使われておらず、調べるのにちょっと苦労したので備忘かねてます。

リテラルや構造体は「Make ***」

 即値や構造体は、Makeではじまるノードです。

f:id:katze_7514:20151015220831j:plain

Actor(を継承したクラス)は、「Spawn Actor from Class」

f:id:katze_7514:20151015221640j:plain

 生成と同時にLevelに配置されます。
 LevelやActor(を継承したクラス)上でしか呼び出すことができません。

 サウンドやパーティクルなど、専用のSpawnノードが用意されてるシステムもあります。

 破壊は、DesytroyActorノードになります。

Componentは、「Add *** Component」

f:id:katze_7514:20151015222051j:plain

 ComponentはBPエディタなどで固定でつけることが多いと思いますが、上記のノードで指定したActorに追加されます。

 破壊は、「Desytroy ***」ノードです。

Object継承クラス(Actor以外のクラス)は、「Construct from Class」

f:id:katze_7514:20151015221639j:plain

 4.9から、Actorを継承しないクラス、つまりObjectを継承したクラスもBPでインスタンス生成ができるようになりました。(前バージョンまではC++を介す必要がありました)
 Object継承クラスは、構造体では物足りない機能を持ったデータクラスを作るなどに利用します。
 現在、個別に破壊するノードはなさそうですので、リファレンスを外してGCに任せるだけになるみたいです。

 Actorを継承していないクラスのハマりポイントとしては、使用することのできるノードに一部制限が掛かることです。SpawnActorなどLevelに関するノードが使うことができません。ソースをざっと見ると、Actorが持っている情報を暗黙に使っているためのようです。他にもあるかもしれませんが、自分が一番ハマったのはそこでした。

それ以外

 Widget/Materialは、「Create ***」あたり。