Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 将UI元素的内容扩展到最大值(统一)_Unity3d_User Interface - Fatal编程技术网

Unity3d 将UI元素的内容扩展到最大值(统一)

Unity3d 将UI元素的内容扩展到最大值(统一),unity3d,user-interface,Unity3d,User Interface,我有一个面板,其中包含一个TextMeshPro(TMP)对象和几个垂直对齐的其他(例如按钮)。我想要以下行为: 随着TMP中添加更多文本或添加更多元素(例如按钮和子图像),面板尺寸垂直扩展 随着更多的文本添加到TMP中,我们停止扩展面板的大小,而是使用溢出(省略号或其他) 因此,它应该在文本长时和文本短时进行查看 我的当前设置在面板对象中具有垂直布局组和内容大小装配器组件 垂直布局组已勾选“控制子尺寸”,但未勾选“使用子比例”或“强制子展开” 内容尺寸装配工具有垂直装配的“首选尺寸” TM

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

  • 随着TMP中添加更多文本或添加更多元素(例如按钮和子图像),面板尺寸垂直扩展

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

  • 因此,它应该在文本长时和文本短时进行查看

    我的当前设置在面板对象中具有垂直布局组和内容大小装配器组件

    垂直布局组已勾选“控制子尺寸”,但未勾选“使用子比例”或“强制子展开”

    内容尺寸装配工具有垂直装配的“首选尺寸”

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

    如果我从TMP中取消选中“首选大小”,TMP对象将收缩以适合少量文本(如我所愿)。然而,当我添加大量文本时,它最终会在没有上限的情况下不断增长

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


    谢谢

    我找到的最佳解决方案是使用内容大小调整器向父对象添加一个新组件,以强制执行最大值

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


    完整的解决方案来自一个名为Democide(又名Democritus)的Unity用户,可在此处找到

    我回滚了您的编辑。将解决方案编辑到问题中或只发布非现场链接作为解决方案是不合适的。您可能想花几分钟阅读这些页面来了解网站的工作原理。