• Unity UGUI的ScrollRect(滚动视图)组件的介绍及使用


    Unity UGUI的ScrollRect(滚动视图)组件的介绍及使用

    1. 什么是ScrollRect组件?

    ScrollRect(滚动视图)是Unity UGUI中的一个常用组件,用于在UI界面中创建可滚动的区域。通过ScrollRect组件,可以实现在有限的空间内显示大量的内容,并且可以通过滑动手势来浏览内容。

    2. ScrollRect组件的工作原理

    ScrollRect组件通过将内容放置在一个可滚动的矩形区域内,然后通过拖动或滑动手势来改变内容的显示位置。ScrollRect组件包含一个Viewport(视口)和一个Content(内容)两个子对象,Viewport用于限制Content的显示范围,而Content则包含了实际的内容。

    3. ScrollRect组件的常用属性

    • Content:用于放置实际的内容的RectTransform对象。
    • Horizontal:是否允许水平方向的滚动。
    • Vertical:是否允许垂直方向的滚动。
    • Movement Type:滚动的类型,可选的类型有:Unrestricted(不受限制)、Elastic(弹性)、Clamped(限制)。
    • Inertia:是否启用惯性滚动。
    • Deceleration Rate:惯性滚动的减速率。
    • Scroll Sensitivity:滚动的灵敏度。

    4. ScrollRect组件的常用函数

    • ScrollTo:滚动到指定位置。
    • StopMovement:停止滚动。
    • OnBeginDrag:开始拖拽时调用的函数。
    • OnDrag:拖拽过程中调用的函数。
    • OnEndDrag:结束拖拽时调用的函数。

    5. 示例代码

    示例1:基本的滚动视图

    using UnityEngine;
    using UnityEngine.UI;
    
    public class ScrollRectExample : MonoBehaviour
    {
        public ScrollRect scrollRect;
    
        void Start()
        {
            // 设置Content的大小
            RectTransform content = scrollRect.content;
            content.sizeDelta = new Vector2(0, 1000);
    
            // 设置滚动视图的滚动范围
            scrollRect.verticalNormalizedPosition = 1;
        }
    }
    

    操作步骤:

    1. 创建一个空的GameObject,并添加ScrollRect组件。
    2. 在Hierarchy面板中选中ScrollRect对象,将Content对象拖拽到ScrollRect的Content属性中。
    3. 将示例代码添加到ScrollRectExample脚本中,并将ScrollRect对象拖拽到scrollRect属性中。
    4. 运行游戏,可以看到滚动视图中的内容可以通过滑动手势进行滚动。

    示例2:限制滚动范围

    using UnityEngine;
    using UnityEngine.UI;
    
    public class ScrollRectExample : MonoBehaviour
    {
        public ScrollRect scrollRect;
    
        void Start()
        {
            // 设置Content的大小
            RectTransform content = scrollRect.content;
            content.sizeDelta = new Vector2(0, 1000);
    
            // 设置滚动视图的滚动范围
            scrollRect.verticalNormalizedPosition = 1;
            scrollRect.movementType = ScrollRect.MovementType.Clamped;
        }
    }
    

    操作步骤:

    1. 创建一个空的GameObject,并添加ScrollRect组件。
    2. 在Hierarchy面板中选中ScrollRect对象,将Content对象拖拽到ScrollRect的Content属性中。
    3. 将示例代码添加到ScrollRectExample脚本中,并将ScrollRect对象拖拽到scrollRect属性中。
    4. 运行游戏,可以看到滚动视图中的内容在滚动到边界时会受到限制。

    示例3:惯性滚动

    using UnityEngine;
    using UnityEngine.UI;
    
    public class ScrollRectExample : MonoBehaviour
    {
        public ScrollRect scrollRect;
    
        void Start()
        {
            // 设置Content的大小
            RectTransform content = scrollRect.content;
            content.sizeDelta = new Vector2(0, 1000);
    
            // 设置滚动视图的滚动范围
            scrollRect.verticalNormalizedPosition = 1;
            scrollRect.inertia = true;
            scrollRect.decelerationRate = 0.5f;
        }
    }
    

    操作步骤:

    1. 创建一个空的GameObject,并添加ScrollRect组件。
    2. 在Hierarchy面板中选中ScrollRect对象,将Content对象拖拽到ScrollRect的Content属性中。
    3. 将示例代码添加到ScrollRectExample脚本中,并将ScrollRect对象拖拽到scrollRect属性中。
    4. 运行游戏,可以看到滚动视图中的内容在滑动结束后会有惯性滚动的效果。

    示例4:滚动到指定位置

    using UnityEngine;
    using UnityEngine.UI;
    
    public class ScrollRectExample : MonoBehaviour
    {
        public ScrollRect scrollRect;
    
        void Start()
        {
            // 设置Content的大小
            RectTransform content = scrollRect.content;
            content.sizeDelta = new Vector2(0, 1000);
    
            // 设置滚动视图的滚动范围
            scrollRect.verticalNormalizedPosition = 1;
    
            // 滚动到指定位置
            scrollRect.ScrollTo(new Vector2(0, 500), 0.5f);
        }
    }
    

    操作步骤:

    1. 创建一个空的GameObject,并添加ScrollRect组件。
    2. 在Hierarchy面板中选中ScrollRect对象,将Content对象拖拽到ScrollRect的Content属性中。
    3. 将示例代码添加到ScrollRectExample脚本中,并将ScrollRect对象拖拽到scrollRect属性中。
    4. 运行游戏,可以看到滚动视图会自动滚动到指定位置。

    示例5:停止滚动

    using UnityEngine;
    using UnityEngine.UI;
    
    public class ScrollRectExample : MonoBehaviour
    {
        public ScrollRect scrollRect;
    
        void Start()
        {
            // 设置Content的大小
            RectTransform content = scrollRect.content;
            content.sizeDelta = new Vector2(0, 1000);
    
            // 设置滚动视图的滚动范围
            scrollRect.verticalNormalizedPosition = 1;
    
            // 停止滚动
            scrollRect.StopMovement();
        }
    }
    

    操作步骤:

    1. 创建一个空的GameObject,并添加ScrollRect组件。
    2. 在Hierarchy面板中选中ScrollRect对象,将Content对象拖拽到ScrollRect的Content属性中。
    3. 将示例代码添加到ScrollRectExample脚本中,并将ScrollRect对象拖拽到scrollRect属性中。
    4. 运行游戏,可以看到滚动视图会停止滚动。

    6. 注意事项

    • ScrollRect组件需要配合其他UI组件(如Mask)一起使用,以限制内容的显示范围。
    • 在使用ScrollRect组件时,需要注意Content的大小和滚动范围的设置,以确保内容能够正确地显示和滚动。

    7. 参考资料

  • 相关阅读:
    微信小程序canvas 证件照制作
    原生微信小程序学习第一部分
    ubuntu下同时安装和使用不同版本的库 librealsense
    excel split text into different rows
    美国国家安全实验室员工详细数据在网上泄露
    CVE-2017-12615 Tomcat远程命令执行漏洞
    Vue - 实现获取手机验证码倒计时 60 秒(手机号+验证码登录功能)
    【Linux】结合当前软件工程技术的背景,评价当前市面上流行的操作系统的局限性
    从输入URL到网页显示,期间发生了什么(详解)
    基础算法--二分查找
  • 原文地址:https://www.cnblogs.com/alianblank/p/17683385.html