根据内容调整UI元素大小,最多放大到一定限制(Unity)

3
我有一个包含 TextMeshPro (TMP) 对象和其他几个(例如按钮)垂直对齐的面板。我希望实现以下行为:
  1. 随着将更多文本添加到 TMP 或添加更多元素(例如按钮和子图片),面板大小会垂直扩展。
  2. 随着将更多文本添加到 TMP,我们停止扩展面板的尺寸,而是使用溢出(省略号或其他方法)。
因此,当文本很长时应该看起来像这样,当文本很短时应该看起来像这样
我的当前设置在 Panel 对象中具有 Vertical Layout Group 和 Content Size Fitter 组件。
Vertical Layout Group 启用了“控制子对象大小”,但未启用“使用子对象缩放”或“强制子对象扩展”。
Content Size Fitter 使用“垂直适配首选大小”。
TMP 对象具有布局元素组件。如果我将此组件设置为特定的首选大小,则其将固定在该大小,并且可以很好地处理溢出情况,但是当文本内容很短时,会有大量额外的空间
如果我取消 TMP 中的首选大小,则 TMP 对象会紧密地适应小量文本(正如我所期望的那样)。但是,当我添加大量文本时,它会不断增长而没有上限,并最终占据整个屏幕以上的空间
是否可以通过调整布局元素/内容尺寸适配器/垂直布局组的设置来实现我的预期行为?还是必须编写新组件以打开首选大小,从而在文本达到一定长度时限制高度?
谢谢!

我撤销了你的编辑。将解决方案编辑到问题中或仅发布一个外部链接作为解决方案都是不合适的。你可能需要花几分钟阅读[帮助]页面,了解该网站的工作原理。 - Ken White
相关链接:https://forum.unity.com/threads/rect-transform-size-limiter.620860/#post-7020001 - undefined
1个回答

1
我找到的最佳解决方案是向父对象添加一个新组件,该组件具有Content Size Fitter,可以强制执行最大值。
新组件需要实现接口ILayoutSelfController,并实现方法SetLayoutHorizontal和SetLayoutVertical。在这些方法中,检查当前的X和Y维度是否大于您在检查器中设置的Serialized maxes。
完整的解决方案来自Unity用户Democide(又名Democritus),可在此处找到https://forum.unity.com/threads/purpose-of-uibehaviour.289666/

您的帖子中没有名为“Democide”的用户,也与此问题毫无关系。 - Vinz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接