🌡️
【UE5】AnimNotifyではSpawnActorできるがAnimNotifyStateではSpawnActorできない理由
概要
この記事は一人アドベントカレンダー by ダリアの16日目の記事です。
AnimNotifyState
でSpawnActorが使用できなかったので、何故使用できないのか調べたことをまとめた記事になります。
AnimNotifyStateではSpawnActorの候補がない
AnimNotifyではSpawnActorの候補がある
この2つの違いは、C++のソースコードを見ると、AnimeNotify
にはGetWorld
関数が実装されていて、AnimNotifyState
にはGetWorld
関数が実装されてない違いがありました。
実際、AnimNotify
の方ではコメントで以下のような記述がありました。
We don't instance UAnimNotify objects along with the animations they belong to, but we still need a way to see which world this UAnimNotify is currently operating on. So this retrieves a contextual world pointer, from the triggering animation/ mesh.
翻訳すると
UAnimNotify オブジェクトとそれらが属するアニメーションをインスタンス化しませんが、この UAnimNotify が現在どのワールドで動作しているかを確認する方法が必要です。したがって、これは、トリガーとなるアニメーション/メッシュからコンテキストワールドポインターを取得します。
と書かれており、それならAnimeNotifyState
の方にもGetWorld
が必要なのでは?と思いましたが、深い意図があるかもしれないので、こういう違いがあるんだなと知識として留めておこうと思いました。
環境
UE5.4.4
参考
Engine\Source\Runtime\Engine\Classes\Animation\AnimNotifies\AnimNotify.h
Engine\Source\Runtime\Engine\Classes\Animation\AnimNotifies\AnimNotifyState.h
Discussion