Unity -UGUI中Text文本框的自动调整,字体大小的自适应调节

一.UGUI text框大小固定,里面字体大小随着文字增多逐渐变小的设置(很简单)

Unity -UGUI中Text文本框的自动调整,字体大小的自适应调节

1.找到Text组件的Parageraph(段落)组件,在Horizontal Overflow和Vertical Overflow调整你想变化的轴

2.Best Fit的选项卡打开,默认是关闭的,设置最大和最小变化的字体大小。

以上即可完成固定输入框大小,字体变多,字体随着不断变小的情况了。

二.UGUI text框大小不固定,text框随着字数增加逐渐拉长但是字体的大小不变,无背景(需要用到Content Size Fitter组件)

1.这种方式需要用到Content Size Fitter组件,在Text上挂载Content Size Fitter组件

Unity -UGUI中Text文本框的自动调整,字体大小的自适应调节Unity -UGUI中Text文本框的自动调整,字体大小的自适应调节

2.调节水平和竖直方向上的缩放方式。这个地方要注意的是Transform组件的Pivot,默认是(0.5,0.5),Content Size Fitter组件用来根据这个控制缩放,当为(1,0)只有Horizontal Fit组件在匹配,当为(0,1)时是VerticalFit匹配。图中的设置是竖直无限拉长的处理;

可以通过调节Pivot以及Content Size Fitter两个组件进行尝试调节你想要的效果

三.UGUI text框大小不固定,text框随着字数增加逐渐拉长字体的大小不变,有背景(需要用到Content Size Fitter和Vertical Layout Group组件)

1.在Text文本框的父物体上增加Content Size Fitter和Vertical Layout Group组件

Unity -UGUI中Text文本框的自动调整,字体大小的自适应调节

2.在Text上同样增加如二中所示的Content Size Fitter组件

3.调节Vertical Layout Group组件,完成自动大小变化的调整。

最后:这几种调节方式,特别是在第三种情况下,当字体可能会无限增长,想要一定长度的换行就需要特殊的换行处理,可以通过对文本的截取,在一定长度内增加'\n'来换行。下面附上简单写的代码,可以用看来参考


    /// <summary>
    /// 将str更换为带换行"/n"的输入框
    /// </summary>
    /// <param name="str">需要转换的str</param>
    /// <returns>带换行的Str</returns>
    public static string GetNstring(string str)
    {
        string result = "";
        int point = 0;
        for (int i = 0; i < str.Length; i++)
        {
            if (point == 40)
            {              
                result += '\n';
                point = 0;
            }
            result += str[i];
            point++;
        }     
        return result;
    }