使用ScrollRect实现滚动视图时,强制移动用户在背景上滚动,因为Unity在here中说明
要滚动内容,必须从ScrollRect的边界内部接收输入,而不是内容本身。
如何通过滚动内容使滚动用户友好?
答案 0 :(得分:3)
你可以这样做:
实施IPointerDownHandler,IPointerUpHandler,IDragHandler
public void OnPointerDown(PointerEventData eventData)
{
_parentScroll.OnBeginDrag(eventData);
}
public void OnPointerUp(PointerEventData eventData)
{
_parentScroll.OnEndDrag(eventData);
}
public void OnDrag(PointerEventData eventData)
{
_parentScroll.OnDrag(eventData);
}
答案 1 :(得分:2)
我已经制作了这个脚本来解决这个问题,内容按预期滚动视图。只需将其添加到ScrollRect内容中的每个元素即可。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ScrollElement : MonoBehaviour, IDragHandler
{
ScrollRect scrollRect;
// Use this for initialization
void Start ()
{
scrollRect = GetComponentInParent<ScrollRect> ();
}
public void OnDrag (PointerEventData eventData)
{
scrollRect.verticalNormalizedPosition -= eventData.delta.y / ((float)Screen.height);
}
}
请注意,在Awake
上,它会尝试找到第一个ScrollRect
组件。 谨防如果对象本身(this
)包含组件GetComponentInParent<ScrollRect> ()
,则会使用该组件。