UGUI強制刷新Layout(布局)組件

原文鏈接:https://blog.csdn.net/qq_33461689/article/details/104793269

不久前接到策劃的一個需求,做一個自動適配的顯示:不固定文本+不固定按鈕+不固定文字,類似于:

image

對于這種需求,首先想到的就是在父物體上添加HorizontalLayoutGroup組件自動管理子物體的布局,在子物體上添加ContentSizeFitter組件通過內(nèi)容適配文本的大小!

但代碼寫出來,文本之間會有重疊,觀察發(fā)現(xiàn)只要改變父物體或者其中一個子物體的enable,重疊的文本就會顯示正常。試著在加載預(yù)制之前隱藏子物體,加載完成之后再顯示,還是不得不到想要的結(jié)果。最后在網(wǎng)上找到了解決方案,使用LayoutRebuilder.ForceRebuildLayoutImmediate(RT)的方法,在加載完成之后調(diào)用了一下該方法,問題解決了。

參數(shù)RT是帶有LayoutGroup組件的RectTransform。

下面是他貼的源碼:


image

image

?
image

?
image

今天又遇到類似的問題,并且子物體也會嵌套內(nèi)容自適應(yīng)組件。同理,子物體也需要將帶有LayoutGroup組件的RectTransform強制重建。

總結(jié):

解決這個問題之后,順便翻了一下LayoutRebuilder.ForceRebuildLayoutImmediate其他的文章,使用ContentSizeFitter自適應(yīng)內(nèi)容來設(shè)置RectTransform會在一幀之后生效,如果設(shè)置不生效,可以在代碼最后調(diào)用LayoutRebuilder.ForceRebuildLayoutImmediate來重新繪制Layout。

參考:

雨松MoMo:Unity3D研究院之ContentSizeFitter同步立即響應(yīng)回調(diào)

騰訊網(wǎng)友:Unity中[VerticalLayoutGroup]及[HorizontalLayoutGroup]動態(tài)刷新顯示不正常

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容