RetainerBox->GetEffectMaterial()でDynamicInstanceMaterialを取得して
マテリアルのパラメータを変更しようとしたときに遭遇した問題メモ
問題
WidgetをAddToviewportしたときにRetainerBoxのマテリアルの画像を差し替えたりする
初期化処理を実装していると
RetainerBox->GetEffectMaterial()
の返り値がnullptrになってしまう事があった。
解決策
呼び出しのタイミングの問題
具体的には
NativeOnInitialized
で呼び出すとnullを返して
NativeConstruct
だと正常に動作する。
NativeConstructはAddtoViewPortされる度に呼ばれるので注意が必要
NativeConstructでフラグを使って一度のみ初期化する
のような対応が必要になってしまう
NativeOnInitializedは一度のみしか呼ばれないのでそちらのほうがキレイに書けるが
エンジン側の都合なのでどうしようもなさそうである…