using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.EventSystems;
|
using UnityEngine.UI;
|
namespace vnxbqy.UI
|
{
|
[RequireComponent(typeof(ScrollRect))]
|
public class NestingScrollRect : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
{
|
[SerializeField] ScrollRect m_ParentScrollRect;
|
|
ScrollRect m_ScrollRect;
|
ScrollRect scrollRect
|
{
|
get
|
{
|
if (m_ScrollRect == null)
|
{
|
m_ScrollRect = GetComponent<ScrollRect>();
|
}
|
return m_ScrollRect;
|
}
|
}
|
|
public void OnBeginDrag(PointerEventData eventData)
|
{
|
m_ParentScrollRect.OnBeginDrag(eventData);
|
}
|
|
public void OnDrag(PointerEventData eventData)
|
{
|
float angle = Mathf.Abs(Vector2.Angle(eventData.delta, Vector2.up));
|
|
if (angle >= 45 && angle <= 135)
|
{
|
m_ParentScrollRect.enabled = m_ParentScrollRect.horizontal;
|
scrollRect.enabled = scrollRect.horizontal;
|
}
|
else
|
{
|
m_ParentScrollRect.enabled = m_ParentScrollRect.vertical;
|
scrollRect.enabled = scrollRect.vertical;
|
}
|
|
m_ParentScrollRect.OnDrag(eventData);
|
}
|
|
public void OnEndDrag(PointerEventData eventData)
|
{
|
scrollRect.enabled = true;
|
m_ParentScrollRect.enabled = true;
|
m_ParentScrollRect.OnEndDrag(eventData);
|
scrollRect.OnEndDrag(eventData);
|
}
|
}
|
}
|