Unreal Engine にて ScaleBox を持った Widget のサイズを更新する処理を実行すると、
一瞬だけ縮小された見た目が表示されます。
詳細な発生条件
・ScaleBox を外した場合は発生しない
・Visibility を Collapsed から Visible に変更した際にも発生する
・SetText などを行った後に ForceLayoutPreass を実行しても依然発生する
・テキストを短い文字列から長い文字列に変更した際に発生する
・同じ箇所でも再現率が100%でないことがある
<br/>
なお、こちらは文章では想像しづらいと思い、サンプルを添付しています。
合わせてご確認いただけたらと思います。
<br/>
原因と解決法をご教示いただけますと幸いです。
t-nikaido1
(t-nikaido1)
2
お世話になっております。
ScaleBox は描画のタイミングで更新される配置情報(LastPaintGeometry)を元に内容のスケールを決定しますので、直前のフレームから ScaleBox 自体のサイズが変化した場合に1フレームの間意図しないスケールで表示される可能性があるようです。
添付して頂いたプロジェクトにおいては W_TestA に配置された W_TestB について SizeToContent がチェックされており、
文字列の長さに応じてウィジェットのサイズが変化しますので上記の条件に当たります。
ScaleBox は指定のサイズに収まるよう内容を拡大/縮小するものですので、
逆に内容に応じてウィジェットのサイズが変化することを望むのであれば ScaleBox を使用しない(W_TestB 内の ScaleBox を除く)のが正着ということにはなるかと思います。
簡単に整理すると
・SizeToContent:内容から自身のサイズを算出する
・ScaleBox:自身のサイズから内容のスケールを算出する
ということになりますので、これらが同一のウィジェットに働くことは矛盾を含む可能性があります。
よろしくお願いいたします。
ご確認、ご回答ありがとうございます。
提示いただいた方法をもとに検証、検討を進めようと思います。