Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- public class NestedScrollRect : ScrollRect
- {
- public override void OnInitializePotentialDrag(PointerEventData eventData)
- {
- m_parentScrollRect?.OnInitializePotentialDrag(eventData);
- base.OnInitializePotentialDrag(eventData);
- }
- public override void OnBeginDrag(PointerEventData eventData)
- {
- m_routeToParent = (!horizontal && Mathf.Abs(eventData.delta.x) > Mathf.Abs(eventData.delta.y)) || (!vertical && Mathf.Abs(eventData.delta.x) < Mathf.Abs(eventData.delta.y));
- if (m_routeToParent)
- {
- m_parentScrollRect?.OnBeginDrag(eventData);
- }
- else
- {
- base.OnBeginDrag(eventData);
- }
- }
- public override void OnDrag(PointerEventData eventData)
- {
- if(m_routeToParent)
- {
- m_parentScrollRect?.OnDrag(eventData);
- }
- else
- {
- base.OnDrag(eventData);
- }
- }
- public override void OnEndDrag(PointerEventData eventData)
- {
- if (m_routeToParent)
- {
- m_parentScrollRect?.OnEndDrag(eventData);
- }
- else
- {
- base.OnEndDrag(eventData);
- }
- m_routeToParent = false;
- }
- [SerializeField] private ScrollRect m_parentScrollRect = null;
- private bool m_routeToParent = false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement