とある日の職場での
先輩との会話。
私:「先輩!このActorクラスから値引っ張りたいんすけど!」
先輩:「Tagで引っ張ってくるがよい。」
私:「おk!(Tagってなんやねん!!)」
で、Tagについて調べた。
AActorを継承するクラスにはTagと呼ばれる属性(名前)が付けられる。
Tag付けすることで、欲しいObjectだけを取得したりすることができる。
↓のように敵のクラスには"Enemy"とTag付けしたり。
これを元に敵クラスから"Boss"とTag付けされたObjectを引っ張ってみる。
Blueprintからだとこう。
C++からだとこんな感じか・・・?
GetAllActorOfClass関数はBlueprintOnlyなので無理やり。
これでボスキャラだけを対象にアクションを起こすことができる。
ちなみにC++の方はDestroyしているのでボスは死ぬ。
オーケー、大体把握した。
Actorは何でも引っ張れるのね。
・・・ちょっとまて、LevelもTag持ってるやんけ。
LevelってActorなのか?というか何クラスからの派生や?
で、Tag付けして
GetAllActorOfClass関数を読んでみたらLevelのObjectも引っ張れた。
どうやらWorldクラス(UActorComponentの継承)だった。
LevelもComponent扱いだったのか。Level跨ぎで音が継続できない理由が判明した(過去記事参照)
。
いやしかし、SceneOutlinerをよく見たら「World」ってしっかり書いてあった・・・。
どうやらVer4.7からはLevelもComponentとして表示される。4.6、4.5では出てなかったのにー。
という訳で、本日はTagの使い方とLevelの正体を勉強しやした。