例えば、添付した画像のような場合です。
"Set Decal material"のノード上でマテリアルを1つ選択してしまうと、必ずそのマテリアルが呼ばれてしまいます。
そうではなく、条件によって呼び出すマテリアルを変えたいので、"New Decal material"ピンに、文字列を接続したいのです。
ですが、もちろんここに文字列のノードを接続することは出来ません。
こういう場合、どうすればよいのでしょうか?
例えば、添付した画像のような場合です。
"Set Decal material"のノード上でマテリアルを1つ選択してしまうと、必ずそのマテリアルが呼ばれてしまいます。
そうではなく、条件によって呼び出すマテリアルを変えたいので、"New Decal material"ピンに、文字列を接続したいのです。
ですが、もちろんここに文字列のノードを接続することは出来ません。
こういう場合、どうすればよいのでしょうか?
StringからMaterialInterfaceのObjectReferenceを直接指定する方法はありません
どうしてもStringから解決したければSoftReferenceを通して解決できますが、個人的にはお勧めしません
単に条件によって読み込むMaterialを変えたい、というのであれば、Selectノードの使用をお勧めします
DataTableを使って分岐させるのも良いでしょう
T_Sumisaki 様
明確な回答をいただき、ありがとうございます。
3つも解決策を提示していただけて本当に助かります。
今回の私のケースでは、使用するマテリアルの種類が多くなりそうですので、
"DataTable"を使うのが一番良さそうです。
重ねての質問で恐縮なのですが、
文字列を使って直接指定することが出来ないのはマテリアルに限ったことではなく、
"Set Texture"におけるテクスチャ名や、"Spawan Actor"におけるActor名なども同様で、
基本的には上記3つのような方法で指定する必要があるという認識でよろしいでしょうか?
文字列による指定、というのは複数の問題を抱えることになります
まずはタイプミスや思い違いによるバグの可能性があります
それから、EngineがReferenceの追跡を正常に行えなくなります
これはCookやPackaging、AssetのLoad周りに影響します
EngineやEditorを使用する恩恵が大きく削がれることになりますので、特殊な事情がなければObjectReferenceやClassReferenceで解決するべきと考えます
よく分かりました。
ご説明いただいたことで、より理解を深める事ができました。
ありがとうございます!