京城遊戲人-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
-