1、ScrollvRect是什么
滚动视图组件,是UGUI中用于处理滚动视图相关交互的关键组件
默认创建的ScrllRect由4组对象组成:
2、ScrollRect参数
Content:控制滚动视图显示内容的父对象,它的尺寸有多大滚动视图就能拖多远所有需要显示的内容均作为Content的子对象Horizontal:启动水平滚动Vertical:启动垂直滚动注意:无论Horizontal/Vertical是否勾选,都可以通过滚动条进行拖动,只是不能直接在视图范围内按相应方向直接拖动
Movement Type:滚动视图元素的运动类型,主要控制拖动时的反馈效果Inertia:移动惯性,如果开启,松开鼠标后会有一定的移动惯性
Deceleration Rate:减速率(0~1),0没有惯性,1不会停止
Scroll Sensitivity:滚轮(鼠标中间)和触摸板(笔记本)的滚动事件敏感性Viewport:关联滚动视图内容视口对象(可视范围,改变Scroll View大小时,Viewport也该跟着改变)Horizontal Scrollbar:关联水平滚动条Visibility:是否在不需要时自动隐藏等模式
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<ScrollRect>();// 改变内容的大小,具体可以拖动多少,都是根据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);});