我在Canvas中有这个简单的结构:


GameObject(垂直布局组)


UI图像(垂直布局组)


TMP UGUI文本(水平布局组,内容大小适合)




现在,它可以很好地工作,当文本超出边界时,UI图像将展开。
但是由于我有一个布局组作为我的TMP文本的父级,因此我在文本的内容大小限制器中收到一个错误,说“父级有一种布局组组件...”。
因此,当文本更改时,图像高度有时不会更新(不会增大或缩小,只有在刷新或保存项目之后才可以)。

user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP
user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP

我在这里做错什么了吗?

最佳答案

由于要附加图像,因此我将其转换为答案。我为聊天功能做了类似的事情。


使父项具有合适的内容大小,然后将水平或垂直大小设置为首选大小。
user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP
让其直接子级作为背景,并向其添加一个layout元素以控制其最小尺寸。还要向其中添加一个布局组,以控制将其作为子级放置的文本。
user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP
将文本添加为​​背景的子级
user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP
更改文本以检查背景。
user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP


[编辑]
1.我将父级的布局组更改为VerticalLayoutGroup
2.我复制了游戏对象“背景”,但是使用了不同的文本,您可以看到ContentSizeFitterVerticalLayoutGroup如何控制子代的大小。
user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP
user-interface - Unity3D-“父类具有布局组的类型”错误-LMLPHP

在上面的屏幕截图中,我从未在rect变换上进行任何调整。我刚刚更改了文本,并且您可以看到,每个文本/对话框/消息的背景也进行了调整。

07-28 06:41