文本框 清空_只需5步,Unity中创建自滚动聊天室文本框

本文介绍如何在Unity中创建一个自动滚动并扩展的文本框。通过添加ScrollRect组件、设置Text和Panel的定位,以及编写自动滚动代码,实现文本更新时滚动到最底部的功能。详细步骤包括创建容器、添加Text、设置Content Size Fitter、添加Mask和Scroll Rect组件,以及编写自动滚动的C#代码。
摘要由CSDN通过智能技术生成

f85989a683d0281b5f15800ef8cc0535.png

初入Unity大门,在做界面时也走了一些弯路,这里记录下一些经验,也供分享。

想要创建一个可滚动的自动扩展文本框,并且在文本更新时能够自动滚动至最底部。在网上找了一些资料,都不太准确且有多余步骤,这里总结并精炼了一下步骤。

1、创建一个容器,用于添加ScrollRect组件,可以使用Panel也可以使用Image,推荐Panel。

c36e79ad6f9f62e508ccba5c9dad0769.png

2、在Panel下创建子元素Text,依需要设置好定位。

b8298cd1727914caeb081273f6380a79.png

这是我的定位设置,其中Pivot X=0, Y=0.01,注意的是高度设置是没有意义的,因为下面会通过组件来控制高度。

85f956ee01893a528baaeffa84536562.png

3、在Text中添加Layout组件中的Content Size Fitter,并设置Content Size Fitter中的Vertical Fit为”Preferred Size“。

7bf4a84b4bc0bd7e32f5c7df2a6bde38.png

4、回到Panel,添加UI组件中的Mask和Scroll Rect组件,并设置Scroll Rect中的Content为之前添加的Text控件。因为我并不需要水平滚动,所以也将Horizontal属性清空。

caea59b963e095b36d8b9f57c476b8ab.png

至此一个可滚动的文本框就建立完毕了,其文本显示范围由Panel决定。如果只是显示静态文本,在Text的text属性中输入文本即可。

下面是添加自动滚动代码的步骤。

5、打开代码编辑器,在你需要向该文本框输入内容的类中设定两个变量:

    [SerializeField]
    private Text textView;
    [SerializeField]
    private ScrollRect scrollControl;

添加如下函数:

    public void WriteText(string text)
    {
        textView.text += "n"+ text;
        StartCoroutine("ScrollToBottom");
    }

    IEnumerator ScrollToBottom()
    {
        yield return new WaitForEndOfFrame();        
        scrollControl.verticalNormalizedPosition = 0f;
    }

稍微解释一下,scrollControl.verticalNormalizedPosition = 0f; 就是实现滚动自底部的代码,之所以不能立即调用,是因为控件写入值后需要一帧的时间来绘制,因此此时的滚动条位置是不准确的,必须等待该帧绘制完毕,再执行该行代码。

6、保存代码,回到Unity编辑器,将Panel关联至scrollControl变量、Text关联至textView变量即可。

添加滚动条的步骤比较简单,这里就不赘述了。

所有步骤在 Unity2017.3.0f3 版本中测试通过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值