UGUI - 动态赋值后刷新不及时问题

Content Size Fitter刷新不及时

解决办法:UnityEngine.Canvas.ForceUpdateCanvases();        强制刷新Canvas

对性能有影响

例如:在Text的应用中,当代码赋值Text后,text上的ContentSizeFitter不会立即刷新,而是要等到下一帧才刷新,则:

m_Text.text = "xxx";

UnityEngine.Canvas.ForceUpdateCanvases();

此方法也对其他的组件有效:

例如:

聊天界面里,发送消息或者收到消息后,赋值显示UI完毕后

调用scroll_rect_.verticalNormalizedPosition = 0 使滑动条滑至最底部

此时可能会出现未滑到最底部的问题

则可以在赋值完Scroll后,依次执行即可

..赋值ScrollList..

UnityEngine.Canvas.ForceUpdateCanvases();

scroll_rect_.verticalNormalizedPosition = 0;

Layout 刷新不及时

解决办法:LayoutRebuilder.ForceRebuildLayoutImmediate(挂载Layout的RectTransform)

推荐使用

在赋值完Layout下的物体后,调用上面方法强制刷新Layout

注:若子物体中嵌套很多的Layout只需针对最上层的几个关键Layout进行强制刷新即可

例如:ScrollRect的Content上的Layout 、 相对最顶层的Layout

猜你喜欢

转载自blog.csdn.net/smile_otl/article/details/134930053