【UE5】 CommmonUIとRetainerBoxを使用した際に遭遇した問題

CommmonUIプラグインでCommonActivatableWidgetStackを使用して
画面遷移を作成した際に遭遇した問題です。

発生状況

CommonActivatableWidgetStackにAddWidgetでWidgetを追加したときに
追加したWidgetの中身にOverlayが親になっているRetainerBoxがあると以下の警告ログが表示される。

The requested size for SRetainerWidget is 0. W:0 H:0

RetainerBoxの子にはimageが一つだけ置いてあり
SetBrushFromSoftTexture
で画像の差し替えを行っていました。

解決策

調査したところ
CommonActivatableWidgetStackの基本機能の画面遷移の問題のようで

Transitionの時間を0にするとログは出なくなります。

Transitionをつけたい場合は以下のような方法がありました。
– RetainerBoxの親にCanvasPanelを配置する
– Fadeが終わったタイミングでRetainerBoxをVisibleにする

Fadeが終わったタイミングでRetainerBoxをVisibleにする
こちらの方法は
画面のFadeが終わったタイミングで表示を呼ばないとうまく動作しないようでした。
例 : Transition = 0.4に指定した場合
fadeInに0.2s fadeOutに0.2sかかるので
Constructが呼ばれてから0.2sより後にRetainerBoxをVisibleにすれば
ログは消えました。

しかしFadeOut中に透明な状態が見えてしまうので対応は難しそうでした。

かなりのレアケースな問題ですが
ネットに情報がなくて困ったのでメモしておきます。