🌡️

【UE5】AnimNotifyではSpawnActorできるがAnimNotifyStateではSpawnActorできない理由

2024/12/16に公開

概要

この記事は一人アドベントカレンダー 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