お世話になっております。
タイトル名のクラッシュについて、UE5.5.4 と UE5.6.1 の StackOBot にて、再現手順記載の内容を行う事で再現しましたのでレポートを添付いたします。(UE5.6.1 の StackOBot {プロジェクト名 StackOBot2})
タイトルの"特定条件"についてですが、一文に纏めますと「Linked Asset で呼び出した State Tree 内の Subtree 内のタスク内にて、State Tree Property Ref の Get Property Reference を呼び出すとクラッシュ」となります。
そのため、Subtree を通さず Root 直下での実行とするとクラッシュは再現できません。
以下の環境においても同様にクラッシュを確認済みとなります。
・Pawn&AIController の State Tree
・Run Env Query を使用 (Env Asset 内が ROOT のみの場合はクラッシュせず、何らかの条件を追加する事でクラッシュします)
クラッシュ回避に関する何らかの情報がありましたら、ご教示頂けますと幸いです。
宜しくお願い致します。
再現手順
1.任意の場所に Actor を作成します。(名前を BP_Actor とします)
2.BP_Actor に State Tree Component を置き、State Tree を作成&設定します。(名前を ST_Main とします)
[Image Removed]
3.ST_Main の Root の次に Linked Asset Type の State を配置します。
4.Linked Asset に State Tree を作成&設定します。(名前を ST_Sub とします)
[Image Removed]
5.ST_Sub の Root の次に Linked Type の State を配置します。(名前を Linked とします)
6.Root 以外の領域にて、Subtree Type の State を配置します。(名前を Subtree とします)
7.Subtree の次に State を配置します。(名前を Crash とします)
8.State Tree Task Blueprint Base 継承の Task を作成します。(名前を STT_Crash とします)
9.State Tree Property Ref の Get Property Reference を呼び出すだけの内容にします (添付画像参照)
[Image Removed]
10.Crash State に STT_Crash を追加し、任意の Parameters を設定して保存します。
11.任意のレベル上に BP_Actor に配置して Play を行うとクラッシュします。
[Image Removed]
問題を再現することができたので、UE-315554 StateTree : Crash when executing GetPropertyRef in SubTree linked via Linked Asset としてバグ登録いたしました。数営業日後にUnreal Engine Issuesに公開されるはずです。
修正まではご調査いただいた通りLinkされたSubtreeとLinkedAssetの組み合わせで問題が発生するので、Subtreeを使わずにインラインで展開するような構造にしていただくか、アセットを分離しなくても良いのであればLinkedAssetを使わずにアセットをまとめていただけますでしょうか。
ありがとうございます。
バグトラッカーが公開されたので共有し、本チケットをクローズさせていただきたいと思います。
https://issues.unrealengine.com/issue/UE-315554
ご確認ありがとうございます。承知致しました。
修正完了までは、以下いずれかの暫定対処の形で進めさせて頂きます。
・Linked Asset で呼び出さない構造 (直接呼び出すか、StateTree を差し替える)
・Subtree を使わない構造 (Root 直下に全て展開)