当前位置: 代码迷 >> 综合 >> Unity UGUI Text背景适应文字,多层排版的时候Parent has a type of layout group component
  详细解决方案

Unity UGUI Text背景适应文字,多层排版的时候Parent has a type of layout group component

热度:24   发布时间:2023-11-10 18:03:56.0

在使用Text 和 Content Size Fitter 还有Layout进行布局的时候,如果设计到多承嵌套往往会懵逼,比如我们需要做一套向下面的UI
在这里插入图片描述
最外面有排序,Content里面的Text 内容不确定,需要自适应。
这时候很容向到的预制体方案是

Scroll View
--Viewport
----Content[Content Size Fitter]Vertical Fit: Preferred Size[Vertical Layout Group]Child Force Expand: W
------Prefab[Vertical Layout Group]Child Force Expand: W
------TMP[Content Size Fitter]Vertical Fit: Preferred Size

TMP 挂上Content Size Fitter自适应,最外层也有自适应这时候Content Size Fitter Componment救护有警告
在这里插入图片描述
但是我们要的效果好像也实现了!!

但是,这是有问题的

这样实现经常在需要重新进行layout的时候会发生排版错误,尽管可以通过,在代码中主动使用一些比较笨拙的方法解决,如SetActive(false)物体之后再SetActive(true),这样排版就正常了,但是显然这是不合理的,而且Unity也给出了警告。所以怎么达到我们想要的效果呢

设置如下:

Scroll View
--Viewport
----Content[Content Size Fitter]Vertical Fit: Preferred Size[Vertical Layout Group]Control Child Size: WChild Force Expand: W
------Prefab[Vertical Layout Group]Control Child Size: WChild Force Expand: W
--------TMP

对比上面,就是在TMP这个Gameobject上面不再挂载Content Size Fitter这个脚本,而是在TMP的父节点同时开启Layout Group的**:Control Child Size、Child Force Expand**这两个属性,就可以达到TMP自动扩展同时控制外层的效果。

光从Control Child Size、Child Force Expand这两个变量的解释来说,很难想到这两个属性同时开启会有这样的效果,有兴趣的可以去研究一下源码。

  相关解决方案