随笔-UGUI中LayoutGroup来自适应长度图片长度

        我们平时在拼UI的时候,会遇到一些需求就是外框的Image需要根据内部的Text的文字长度来自适应外框Image的大小,或者是货币系统中,获取的金币或者钻石外框需要根据玩家的货币数量来自适应外框的长度,例如:

         

         首先我们只需要在Text的GameObject上添加ContentSizeFitter组件,并都选择PreferredSize,即可让Text组件自适应大小。然后可以通过脚本来获取Text的RectTransform中的宽和高,来计算外部Image框的大小。代码并不难,我这里就不贴了。

        其实在UGUI中已经给我提供了相应的方法。并不需要我们自己写脚本,方法如下:

 

         我们只需要在Image的组件上添加同样的ContentSizeFitter组件,设置为PreferredSize模式。同时添加HorizontalLayoutGroup组件,调好对应的位置和Padding的数值。这样我们怎么去改文字,外框都会根据我们的Text大小来自适应改变了。(等宽变换或者等高变换只需要调整相应的控制项就可以达到要求,很简单,自己试试就知道了。我这里就不一一列举了)

        需要注意的是:

         我们在真正的使用时可能会发现,我们在脚本里修改了Text里的内容,但是外框并没有按照我们的要求去正常的变换大小,我们可能需要开关一下GameObject,或者把ChildForceExpand开关一下才能恢复正常,其实就是需要等一帧的。具体什么原因我就不叙述了,直接抛出解决办法:

其实很简单,只需要在你修改完Text的文字之后,添加一句脚本即可:

text.text="Hello World~My name is 魂牵丶梦萦";
LayoutRebuilder.ForceRebuildLayoutImmediate(rect);

其中rect就是你的外框也就是Image上的RectTransForm组件。

猜你喜欢

转载自blog.csdn.net/zhangchong5522/article/details/126123075
今日推荐