動的にクラスを生成するSpawnActorFromClassに引数(初期値)を渡す方法について

以下のようなことをしたいです。
①データテーブルからSpawn対象のクラスを取得して変数に格納。
②SpawnActorFromClassで①のクラスを指定し、クラスを生成する。
③生成の際には「スポーン時に公開」に設定されている変数に値を渡したい。

しかし、下の画像のようにクラスの変数ノードを繋ぐと
「スポーン時に公開」のノードが消えてしまって初期値を渡すことができません。
※これがUnrealEngineの仕様だとは理解しています

クラスを直接指定するとクラスの公開変数「SkillStatus」を設定できますが、

クラスノードを繋ぐと「SkillStatus」渡せなくなってしまいます。

①~③のような引数を渡して動的にクラスを生成することがしたい場合、
どのような実装方法があるでしょうか?SpawnActorFromClass以外の方法でも大丈夫です。
可能であればC++を使用しない方法を教えて頂きたいです。


解決しました。
画像でいうと公開変数に渡しているクラスの変数型をActorではなくBP_MyClasssする必要がありました。
回答して頂いた方々ありがとうございました。

ClassReferenceの対象クラスを適切に指定してください

「Actor」にはSpawn時公開に設定されているユーザー変数がないためです
任意に作成したクラスであれば、ClassReferenceで接続してもSpawn時公開された変数が現れます

Blueprint Interfaceを使用する方法はどうでしょうか。

自分が質問側の投稿で恐縮ですが、下記投稿の3枚目の画像のようにSpawn Actor from ClassノードのReturnValueからインターフェースで値を送る方法です。

↓3枚目の画像

今回だと、Load Class Asset BlockingノードとCast To Actor Classノードを削除して、①に変更し、Row NumをSkill Statusに変更すればいいと思います。

T_Sumisakiさん、回答ありがとうございます。
T_Sumisakiさんの画像の通りにやっても何故か上手くいきません。
ClassReferenceでノードを繋ぐと公開された変数が消えてしまいます。

v4.27.2、v.5.0.3、v5.1.0の全てのversionで試しましたが同じ結果でした。
何故なのか😭

kogetasYさん。ありがとうございます。

教えて頂きたいた方法+αでなんとかできそうです。

「初期値を設定してSpawn⇒BeginPlayで初期化処理」ということをしたいのですが、
画像の方法だと「Spawn⇒BeginPlayで初期化処理⇒BP Interfaceで初期値設定」の順番で処理されてしまっていました。
そのため、Spawn対象クラスのBeginPlayの先頭にDelayUntilNextTickを入れることで上手くいきました。

無理やりかも知れないですが、なんとかできそうです。ありがとうございました。

でもT_Sumisakiさんは上手く動作しているようなのでそこだけは気になります…

ClassReferenceでノードを繋ぐと公開された変数が消えてしまいます。

画像から分かる通り「Actor」の「ClassReference」だからです
「Actor」はEngine側のクラスであるため、設定したい変数は実装されていませんよね?

なのでClassReferenceの「変数の型」は、自分が作ったクラスである必要があります

T_Sumisakisさん
なるほど、理解しました!!
クラスの変数の型をActorではなくBP_MyClasssにする必要があるということですね。
言われてみればその通りですね。ありがとうございます!!