您的位置:首页 > 移动开发 > Unity3D

京城游戏人-Day15: Unity 中 SrollRect 的滚动边界问题

2016-08-11 15:42 1061 查看

京城游戏人-Day15: Unity 中 SrollRect 的滚动边界问题

-

作者:大锐哥

地址:http://blog.csdn.net/prevention

-

一般添加完一个 ScrollView 之后的结构是这样的:

Canvas
-Viewport
-Content
-Item0
-Item1
-Item2


本文的方法是通过控制 Content 来实现边界控制的问题,即滑动到最下面不要再划了、最上面也不要再向上了。这个问题一般只出现在需要 ScrollView 的 Movement Type 为
unrestricted
时。

给 ScrollView 的 On Value Changed 事件添加一个对应的函数,比如叫 OnScrollValueChanged

在这个函数所在的脚本里,要想办法拿到 Content

在这个脚本中添加如下代码,假设你也是想在 Y 方向限制滚动

public void OnScrollValueChanged(Vector2 value) {
Vector3 pos = ScrollContent.transform.position;
if (pos.y > maxY) // maxY 要根据你的情况自己设定
{
pos.y = maxY;
}
else if (pos.y < minY) { // minY 要根据你的情况自己设定
pos.y = minY;
}
ScrollContent.transform.position = pos;
}


其中如果是使用 GridLayoutGroup 的话,加入横向只有一个 grid,纵向就要知道高度。如果是一开始位于最下面(向 CandyCrush 首页那样),则可以这样写:

float maxY = Constants.ScreenHeight * count * 0.5f - Constants.ScreenHeight;
float minY = Constants.ScreenHeight * count * 0.5f * -1;


注意:其中 ScreenHeight 要根据你在摄像机处设置的 Size 值决定(就是 Size 的两倍)。count 就是你的纵向 grid 行数。

-

作者:大锐哥

地址:http://blog.csdn.net/prevention

-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息