Unity 使用InputField和Scroll View制作可滑动的简介功能

效果图:

一、新建Scroll View组件  右键Canvas——>UI——>Scroll View

 二、创建InputField 在新建的Scroll View——>Viewport——>Content下创建InputField

 

 

三、组件整合使用及思路

InputFiexd组件无法使用Content Size Fitter组件自动调整大小,所以需要使用代码将输入的字符赋值给Scroll View下Content的Text组件,Content通过Content Size Fitter自动调整大小后实现效果。

1.首先给Scroll View——>Viewport——>Content添加 Text组件和Content Size Fitter组件

 调整完后,Content的Text组件可以随着文字增多而自动调整大小,当Content大小超过Scroll View高度时,垂直滑动条会显示出来。

2.给InputFexid添加脚本

using UnityEngine;
using UnityEngine.UI;

public class InputFieldToContent : MonoBehaviour
{
    //private static readonly string no_breaking_space = "\u00A0";

    [SerializeField] ScrollRect scrollView; 

    InputField m_InputField;
    Text content_Text;//Scroll View下Content组件Text

    RectTransform m_RectTransform;
    RectTransform content_RectTransform;

    void Start()
    {
        //获取组件
        m_InputField = GetComponent<InputField>();
        content_Text = transform.parent.GetComponent<Text>();
        m_RectTransform= GetComponent<RectTransform>();
        content_RectTransform= content_Text.rectTransform;

        //当InputField输入字符时 
        m_InputField.onValueChanged.AddListener((value) =>
        {
            //替换空格编码格式
            //m_InputField.text = m_InputField.text.Replace(" ", no_breaking_space);

            content_Text.text = m_InputField.text;
            isRefresh = true;//刷新m_InputField大小
        });
    }


    bool isRefresh = false; //是否刷新 
    Vector2 sizeDelta;
    void OnGUI() 
    {
        if (isRefresh)
        {
            LayoutRebuilder.ForceRebuildLayoutImmediate(content_Text.rectTransform);//刷新高度

            //判断内容高度是否超过scrollView 容器高度 
            if (content_RectTransform.sizeDelta.y> scrollView.GetComponent<RectTransform>().sizeDelta.y)
                sizeDelta= new Vector2(m_RectTransform.sizeDelta.x, content_RectTransform.sizeDelta.y);//超过时 修改InputField高度为内容高度
            else
                sizeDelta = new Vector2(m_RectTransform.sizeDelta.x, scrollView.GetComponent<RectTransform>().sizeDelta.y);//未超过时 修改InputField高度为ScrollView高度

            m_RectTransform.sizeDelta = sizeDelta;

            //修改滚动条 使内容位置始终可见
            scrollView.verticalScrollbar.value = 0;
            LayoutRebuilder.ForceRebuildLayoutImmediate(scrollView.GetComponent<RectTransform>());//刷新滚动条

            isRefresh = false;
        }
    }

}

给脚本拖拽上需要的组件 效果就可以完成了

四、优化调整

 

 

 到这里就完成了,根据网上的文章整理优化了一遍,有兴趣可以看一下原文章的讲解。 

 参考连接:Unity 为UGUI InputField添加滑动条 - 简书 (jianshu.com)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity中的ScrollView组件可以实现滑动效果,可以用于显示大量内容的列表或者滚动视图。用户可以通过手势或者鼠标滚轮来滑动视图,从而查看不同的内容。ScrollView组件需要包含一个Content子对象,用于存放要显示的内容。可以通过设置Content的大小和位置来控制滑动视图的范围和滚动条的位置。在代码中,可以通过调用ScrollViewScrollTo方法来控制滑动位置。 ### 回答2: Unity Scroll ViewUnity中提供的一种用于滚动界面的工具。使用Scroll View可以轻松实现在界面内显示过长的内容,从而增加界面的可读性和互动性。Scroll View可以用于多种类型的内容,例如文本、图像、列表等等。 在Unity使用Scroll View非常简单。首先,在场景中创建一个Scroll View对象,然后将需要滚动的内容添加到Scroll View的视图框内。接着,设置Scroll View的属性,如滚动速度、边界等等。最后,在脚本中调用Scroll View的方法,即可实现滚动。 Scroll View滑动可以通过鼠标、触摸屏或键盘进行操作。在移动设备上,用户可以通过手指在屏幕上滑动来实现滚动。而在PC上,则可以通过鼠标滚轮或方向键来进行滚动。 Scroll View除了支持基本的滚动功能外,还支持多种扩展功能。例如,可以通过代码来动态添加、删除和修改视图框中的内容;也可以通过代码来控制滚动条的显隐和位置等等。 总之,Scroll ViewUnity中非常实用的一个工具,可以用于各种类型的应用程序和游戏。掌握Scroll View使用方法,可以大大提升界面的交互性和用户体验。 ### 回答3: UnityScrollViewUnity中常用的滑动控件,它通常用于展示大量的内容,同时也能够进行滚动浏览。下面我们来详细了解一下UnityScrollView的相关知识。 首先,在使用ScrollView前需要先在场景中选择一个空的GameObject,并将其添加上ScrollView组件。接下来在ScrollView组件中可以看到一个RectTransform,我们需要在其中添加一个Panel,这个Panel就是ScrollView滑动容器,所有需要展示的内容都要添加到这个Panel中。同时在ScrollView的组件中,需要设置Viewport的值,将其指向我们添加的Panel。 接下来就是设置ScrollView滑动属性,其中Scroll Rect组件表示滑动的属性,可以设置滑动的速度,以及在滑动时是否需要惯性效果。 Content Size Fitter组件表示ScrollView滑动区域的大小,可以根据内容的实际大小进行自适应设置。Horizontal Layout Group和Vertical Layout Group分别表示横向和纵向的布局方式,可以根据需要选择不同的布局方式。Scrollbar组件表示ScrollView中的滚动条,可以设置滚动条的样式和位置等。 在ScrollView中添加内容也很简单,只需要在Panel中添加需要展示的内容即可,同时需要注意设置好Content Size Fitter以及Layout Group等属性,确保内容能够正常显示和适应不同屏幕的大小。同时,ScrollView还提供了一些事件,例如On Value Changed事件,在滚动时会触发,可以用于实现一些自定义的逻辑。 总之,使用UnityScrollView可以快速地实现复杂的滚动功能,同时它的设置和使用也不难,只需要注意ScrollView的各个组件的设置以及添加内容时的一些细节即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值