首先解释一下,Scroll view 是如何开始滚动的。
正常情况下,鼠标点击或者拖动会使其开始滚动,也就是等于调节了ScrollView上ScrollRect组件的速度值。
如果我们能通过持续给ScrollRect附上一个速度值,那么它就可以自动进行滚动
在设置上面,如果你希望是水平滚动,那么就勾选Horizontal
MovementType随意选择一个就行,没有影响
Inertia一定要勾选上,并且DecelerationRate必须是一个大于0的值,在这里默认值就行
ScrollRect
组件的 inertia
属性控制是否启用滚动的惯性效果。
当 inertia
设置为 true
(默认值)时,当用户在滚动内容后释放鼠标或手指时,内容会继续根据之前的速度滚动一段时间,并逐渐减速直到停止。这种效果模拟了现实中物体在受到外力后继续移动的行为。
如果你将 inertia
设置为 false
,释放指针后会立刻停止,不具有惯性效应。也就是说速度会立刻变为0 。
//初始化一个控制滚动速度的变量
public float scrollSpeed = 100f;
//获取ScrollRect组件
public ScrollRect scrollRect;
//在Update中加
scrollRect.velocity = new Vector2(-scrollSpeed, 0f);
这样能够简单的控制视图向左滚动,而不用鼠标拖拽控制。
再简单说一下scrollrect的速度是以每秒像素数(pixels per second)为单位进行设置的。
在函数中直接设置 velocity
属性,不受帧率影响。无论当前帧率是多少,速度都会按照指定的数值进行更新。
如果想禁止鼠标拖拽,可以简单的关闭画布上的图形射线投射组件,这样鼠标不会对ui进行检测
此外如果禁止了鼠标拖动,Inertia必须要勾选,其变化率也必须大于0 。因为鼠标不操作的情况下,会设置滚动视图的速度一直为0,这样就没办法进行自动滚动。