【UE5】RetainerBox->GetEffectMaterial()がnullになる問題

RetainerBox->GetEffectMaterial()でDynamicInstanceMaterialを取得して
マテリアルのパラメータを変更しようとしたときに遭遇した問題メモ

問題

WidgetをAddToviewportしたときにRetainerBoxのマテリアルの画像を差し替えたりする
初期化処理を実装していると
RetainerBox->GetEffectMaterial()
の返り値がnullptrになってしまう事があった。

解決策

呼び出しのタイミングの問題
具体的には
NativeOnInitializedで呼び出すとnullを返して
NativeConstructだと正常に動作する。


NativeConstructはAddtoViewPortされる度に呼ばれるので注意が必要
NativeConstructでフラグを使って一度のみ初期化する
のような対応が必要になってしまう
NativeOnInitializedは一度のみしか呼ばれないのでそちらのほうがキレイに書けるが
エンジン側の都合なのでどうしようもなさそうである…