【问题标题】:Scaling UI element with content up to a maximum (Unity)将内容缩放到最大的 UI 元素 (Unity)
【发布时间】:2021-04-22 09:15:06
【问题描述】:

我有一个面板,其中包含一个 TextMeshPro (TMP) 对象和一些其他垂直对齐的(例如按钮)。我想要以下行为:

  1. 面板大小随着更多文本添加到 TMP 或添加更多元素(例如按钮和子图像)而垂直扩展。

  2. 随着更多文本添加到 TMP,我们停止扩展面板的大小,而是使用溢出(省略号或其他)。

所以当文本很长时应该是like this,当文本很短时应该是this

我当前的设置在 Panel 对象中有 Vertical Layout Group 和 Content Size Fitter 组件。

垂直布局组已勾选“控制子级大小”,但未勾选“使用子级缩放”或“强制子级展开”。

Content Size Fitter 具有垂直适合的“首选尺寸”。

TMP 对象有一个布局元素组件。如果我将此组件设置为特定的首选大小,它会固定在该大小,因此可以很好地处理溢出,但是当文本内容很短时,会有tons of extra space

如果我从 TMP 中取消选中首选大小,则 TMP 对象会缩小以紧贴少量文本(如我所愿)。但是,当我添加大量文本时,它会不断增长而没有上限,最终taking over the entire screen and more

有没有办法通过调整布局元素/内容大小调整器/垂直布局组的设置来实现我想要的行为?还是我必须编写一个新组件来打开首选大小以在文本达到一定长度时限制高度?

谢谢!

【问题讨论】:

  • 我回滚了您的编辑。将解决方案编辑到问题中或仅发布场外链接作为解决方案是不合适的。您可能需要花几分钟阅读help center 页面以了解该网站的运作方式。

标签: unity3d user-interface


【解决方案1】:

我发现的最佳解决方案是使用强制最大值的 Content Size Fitter 向父对象添加一个新组件。

新组件需要实现接口ILayoutSelfController,实现方法SetLayoutHorizontalSetLayoutVertical。在这些方法中,检查当前 X 和 Y 尺寸是否大于您在检查器中设置的序列化最大值。

来自 Unity 用户 Democide(又名 Democritus)的完整解决方案可在此处获取 https://forum.unity.com/threads/purpose-of-uibehaviour.289666/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多