14 [AddComponentMenu(
"UI/Extensions/ScrollRectEx")]
17 private bool routeToParent =
false;
22 private void DoForParents<T>(Action<T> action) where T : IEventSystemHandler
24 Transform parent = transform.parent;
25 while (parent !=
null)
27 foreach (var component
in parent.GetComponents<
Component>())
30 action((T)(IEventSystemHandler)component);
32 parent = parent.parent;
41 DoForParents<IInitializePotentialDragHandler>((parent) => { parent.OnInitializePotentialDrag(eventData); });
42 base.OnInitializePotentialDrag(eventData);
51 DoForParents<IDragHandler>((parent) => { parent.OnDrag(eventData); });
53 base.OnDrag(eventData);
61 if (!horizontal &&
Math.Abs(eventData.delta.x) >
Math.Abs(eventData.delta.y))
63 else if (!vertical &&
Math.Abs(eventData.delta.x) <
Math.Abs(eventData.delta.y))
66 routeToParent =
false;
69 DoForParents<IBeginDragHandler>((parent) => { parent.OnBeginDrag(eventData); });
71 base.OnBeginDrag(eventData);
80 DoForParents<IEndDragHandler>((parent) => { parent.OnEndDrag(eventData); });
82 base.OnEndDrag(eventData);
83 routeToParent =
false;
86 public override void OnScroll(PointerEventData eventData)
88 if (!horizontal &&
Math.Abs(eventData.scrollDelta.x) >
Math.Abs(eventData.scrollDelta.y))
92 else if (!vertical &&
Math.Abs(eventData.scrollDelta.x) <
Math.Abs(eventData.scrollDelta.y))
98 routeToParent =
false;
102 DoForParents<IScrollHandler>((parent) => {
103 parent.OnScroll(eventData);
106 base.OnScroll(eventData);
UnityEngine.Component Component
Credit Erdener Gonenc - @PixelEnvision.