Unity UI TextBox动态高度。如何根据文本数量进行扩展?

时间:2017-09-03 00:13:48

标签: c# user-interface unity3d

怎么了。

我正在实例化一个文本框游戏对象。 然后用文字填写。

任何使文本框高度动态变化的方法吗?

GameObject reply1 = Instantiate(replyText, transform.position, 
transform.rotation);
reply1.transform.SetParent(textArea.transform, false);
Text reply1text = reply1.GetComponent<Text>();
reply1text.text = gameRounds[roundCount].reply[0];

宽度很好,不需要改变它。

2 个答案:

答案 0 :(得分:1)

您可以将文本框的垂直溢出设置更改为溢出。它会根据文本内容自动增加文本框高度 enter image description here

答案 1 :(得分:0)

您可以将 ContentSizeFitter 组件添加到文本游戏对象,然后将 Vertical Fit 设置为 Preferred Size 。此解决方案仅控制文本框的高度。

如果要自动控制父母的身高,请执行以下步骤。

  1. 向父级添加垂直布局组

enter image description here

  1. Text 游戏对象添加为子对象,并添加 Content Size Fitter 组件。

enter image description here

  1. 现在尝试更改脚本中“文本”组件的文本。您会注意到它无法正常工作。您应该手动更新父级的布局组。

      

    {

    exampleText.text = "Text Example \n Test automatic height";
    
    Invoke("UpdateParentLayoutGroup", 0.1f);
    
         

    } ...

         

    void UpdateParentLayoutGroup(){

    exampleText.gameObject.SetActive(false);
    
    exampleText.gameObject.SetActive(true);
    
         

    }

  2. 享受Unity!