読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

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

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

GetAllActorOfClassからの絞り込み

ブループリント ノード解説 UE4.14

「昨日のだとアクター全部を落下させる形になってしまうので、落下させるアクターと、させないアクターと区別する方法を考える」

f:id:una_unagi:20161112013736p:plain

「一番簡単なやり方はこれ。Actorクラスじゃなくて、特定のクラスで絞り込む方法。一番ノードが少ないし、動作的にも多分速い。ただこれは対象はそのクラスか、継承して作ったサブクラスに限定される。継承すると対象になっちゃうというのが困る場合もある」

妹「継承関係でやるのはちょっと使いにくい事多いね」

C++の継承は親が1つしか持てないからね。インターフェースで絞りこみ出来ればもう少し使い勝手良さそうだけど」

f:id:una_unagi:20161112020941p:plain
f:id:una_unagi:20161112021018p:plain
※追記 タグの有無を調べるにはActorHasTagノードを使う方が効率的です(ド忘れして遠回りな方法使ってます)

「次に考えられるのがタグを使った方法。タグはクラスのデフォルトと、配置済みのアクターと、それぞれで指定出来るけど、どっちかで設定したやつを消すっていうのは出来ない。クラスデフォルトでタグがあると、レベル上で消すってのは出来なさそう
※追記 配置済みのアクターからタグを削除することは可能でした

f:id:una_unagi:20161112021607p:plain
f:id:una_unagi:20161112021611p:plain

コンポーネントを使った方法も有力だと思う。タグと違って変数も付けられるから、有効かどうかのパラメータを作ったり、他にも色々条件設定が出来る」

妹「コンポーネント便利だよね。個別のアクターにくっつけられるから、これだけ特別にってのも出来るし」

f:id:una_unagi:20161112021939p:plain

「ちょっと変わった方法だとこういうのも出来る。配置したアクターの名前で、最初にアンダーバーが付いてたら有効っていうやつ」

妹「これだとどういうメリットが?」

「アウトライナで見ればわかるってことかな。いちいちコンポーネントの中身とか確認しなくていい。継承関係は無視出来るし、個別指定も出来るし元のクラスの最初にその文字を入れておけばデフォルトでその設定になる。ハイテクな感じはしないけど、場合によってはこういう方法もある」

妹「でもアンダーバーとかだと、うっかり違うにもつけちゃいそう」

「文字の長さとか内容は変えてもいいんだけど、場所は先頭部分が一番やりやすい。そういった条件を複数付けたい時は、処理がややこしくなるから、他の方法がいいかも」