京城游戏人-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
-