EventSystems の イベントは子供の要素で呼び出されるため、親には伝わらない
例えば ScrollView の中に ScrollView を入れた場合は子供の ScrollView しか動かすことができない
親にイベントを伝える
同じ GameObject だったらイベントを受け取れることを利用して
イベントを通知するコンポーネントを作成
using UnityEngine; using UnityEngine.EventSystems; public class NoticeEventSystemsDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { [SerializeField] private GameObject[] _noticeObjects; void IBeginDragHandler.OnBeginDrag(PointerEventData eventData) { foreach (var noticeObject in _noticeObjects) ExecuteEvents.Execute<IBeginDragHandler>(noticeObject, eventData, (handler, data) => handler.OnBeginDrag(eventData)); } void IDragHandler.OnDrag(PointerEventData eventData) { foreach (var noticeObject in _noticeObjects) ExecuteEvents.Execute<IDragHandler>(noticeObject, eventData, (handler, data) => handler.OnDrag(eventData)); } void IEndDragHandler.OnEndDrag(PointerEventData eventData) { foreach (var noticeObject in _noticeObjects) ExecuteEvents.Execute<IEndDragHandler>(noticeObject, eventData, (handler, data) => handler.OnEndDrag(eventData)); } }
これを ScrollRect と同じ GameObject に追加することで、親もスクロールできるようになった
なぜか縦のスクロールが伝わってないが、原因は不明