関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2021.03.17UE4UE/ C++UE/ Blueprint
執筆バージョン: Unreal Engine 4.26 |
UObjectをベースとしたBlueprintでは、GetAllActorsOfClass等のWorldContextを要求する関数群を用いることができません。
UObjectを直接継承したBlueprintのグラフ上でGetAllActorsOfClassを使おうとすると下のように見つからず、使用できません。
fig 01. UObjectを継承したBlueprintClassの場合
こういった関数を使用するにはC++でUObjectを継承したベースクラスを作成し、それについて
のいずれかが必要です。
1.については別の記事(ここ)にて触れられています。WorldContextがピンとして追加された上で使用可能になります。
2.の場合、アクター等の場合と同様に使えるようになります(WorldContextにGetWorld()の結果が自動的に割り当てられる)。
fig 02. GetWorldをオーバーライドしたベースクラスを用いた場合
fig 03. ノードも普通に配置されます
注意:
ここで用いたベースクラスの定義はこのようになっています。
GetWorldの中で単に return null としていますが、このままではWorldContextの使用箇所を実行時にWarningが出力され、かつ動作しません。
Actorか何かに対するGetWorld()の結果を戻す等の実装が必要です。