UGUI處理ScrollRect的滑動被OnDrag函式攔截的一點技巧
筆程式小白一名,剛接觸unity不久,在探索UGUI的過程中遇到了一個問題,
Hierarchy介面和Scrollview的設定如圖:
要實現的效果是(1)滑鼠上下滑動時,CardList作為一個整體可以隨滑鼠上下滑動時。
(2)滑鼠左右滑動時,Cardunit 元素中的一個值Num_Card可以增減。
由於Cardunit在上面,他會攔截調Scrollview的ONDrag函式,導致不能實現(1)功能,
不知道小夥伴們是怎麼處理的,歡迎告訴我更好的方法。
下面說說我的方法,起個拋磚引玉的效果。
我是在Cardunit上掛了一個指令碼重寫了下面的3個函式,在函式裡直接呼叫了Scrollview裡面被攔截的函式(scrollRect就是Scrollview上掛的ScrollRect元件)
程式碼如下:
public void OnBeginDrag(PointerEventData eventData)
{
scrollRect.OnBeginDrag (eventData);
}
public void OnDrag(PointerEventData eventData)
{
vec_drap = eventData.delta;
if (Mathf.Abs (vec_drap.x) > value_MinDrog && Mathf.Abs (vec_drap.x) < Mathf.Abs (vec_drap.y)) {
scrollRect.OnDrag (eventData);
numCanChange = false;
} else if (Mathf.Abs (vec_drap.x) > value_MinDrog && Mathf.Abs (vec_drap.x) > Mathf.Abs (vec_drap.y)) {
numCanChange = true;
}
//eventData.IsScrolling();
Debug.Log ("OnDrag" + eventData.delta);
}
public void OnEndDrag(PointerEventData eventData)
{
scrollRect.OnEndDrag (eventData);
Debug.Log (eventData.delta);
if ( vec_drap.x <=0 && numCanChange) {
if (num < 3)
num++;
cardNum .text = num + "";
numCanChange = false;
} else if ( vec_drap.x >=0 && numCanChange) {
if(num>0)
num--;
cardNum .text = num+"";
numCanChange = false;
}
//scrollRect.OnEndDrag(eventData);
}
這樣基本實現了我要的功能,就是不知道在真正的遊戲開發中大牛們是怎麼處理的,歡迎批評指正啊。
第一篇部落格,有點小激動呢