UGUI-- Scrollview 滚动视图

1、ScrollvRect是什么

滚动视图组件,是UGUI中用于处理滚动视图相关交互的关键组件

默认创建的ScrllRect由4组对象组成:

父对象 ScrollRect组件依附的对象,还有一个Image组件,设为背景图
子对象 Viewport 控制滚动视图可视范围和内容显示
Scrollbar Horizontal 水平滚动条
Scrollbar Vertical 垂直滚动条

2、ScrollRect参数

  • Content:控制滚动视图显示内容的父对象,它的尺寸有多大滚动视图就能拖多远
  • 所有需要显示的内容均作为Content的子对象
  • Horizontal:启动水平滚动
  • Vertical:启动垂直滚动

注意:无论Horizontal/Vertical是否勾选,都可以通过滚动条进行拖动,只是不能直接在视图范围内按相应方向直接拖动

  • Movement Type:滚动视图元素的运动类型,主要控制拖动时的反馈效果
Unrestricted(一般不使用) 不受限制,随便拖动
Elastic(常用)

回弹效果,当滚出边缘后,会弹回边界

Elasticity:回弹系数,控制回弹效果,值越大回弹越慢

Clamped 夹紧效果,始终限制在范围内,没有回弹效果
  • Inertia:移动惯性,如果开启,松开鼠标后会有一定的移动惯性

        Deceleration Rate:减速率(0~1),0没有惯性,1不会停止

  • Scroll Sensitivity:滚轮(鼠标中间)和触摸板(笔记本)的滚动事件敏感性
  • Viewport:关联滚动视图内容视口对象(可视范围,改变Scroll View大小时,Viewport也该跟着改变)
  • Horizontal Scrollbar:关联水平滚动条
  • Visibility:是否在不需要时自动隐藏等模式
Permanent 一直显示滚动条
Auto Hide 自动隐藏滚动条
Auto Hide And Expand Viewport 自动隐藏滚动条并且自动拓展内容视口

Auto Hide And Expand Viewport 与 Auto Hide的区别:当Content范围小于Viewport范围时,Auto Hide下Viewport范围不会变化,但是在Auto Hide And Expand Viewport模式下,Viewport范围会扩展到与Scroll View范围一样

  • Spacing:滚动条和视口之间的间隔空间
  • OnValueChanged:滚动视图位置改变时执行的函数列表

如果不需要滚动条,直接将Scrollbar Horizontal/Vertical对象删除即可,但是要注意Scroll View的Scroll Rect组件中的Horizontal/Vertical Scrollbar在删除后会变为Missing,可能会出现错误提示,点击置为None即可

3、代码控制

一般是控制Content,对其中动态地创建对象,并动态地控制Content的大小

ScrollRect sr = this.GetComponent();
// 改变内容的大小,具体可以拖动多少,都是根据Content尺寸决定
sr.content.sizeDelta = new Vector2(200, 200);

// 拖动实际改变的是Content的位置,可以根据Content的位置得到
// Viewport视图范围内相应显示的内容,也可以通过normalizedPosition属性
// normalizedPosition:0~1表示整个滚动条的范围比例,二维向量分别表示水平、竖直方向
sr.normalizedPosition = new Vector2(0, 0.5f);

4、监听事件的两种方式

传入的参数是Vector2,返回的值是Content当前的位置(与normalizedPosition,都是0~1的比例范围)。注意!!!并不一定从上往下就是从0—>1的变化,可能相反

(1)拖代码

(2)代码监听

sr.onValueChanged.AddListener((v) => {
    print("代码监听:" + v);
}); 

你可能感兴趣的:(Unity学习,#,Unity--UI,UGUI,unity)