OnPointerHold干扰Scroll Rect滚动

时间:2016-02-17 15:03:26

标签: unity3d

我的问题的简化示例 - 我使用Unity UI创建以下内容:

enter image description here

一个大面板,包含一个较小面板列表。我已将Scroll Rect附加到容器游戏对象,从而使较小的面板可水平滚动。没问题,一切都按预期工作。

但是,我在每个较小的面板上都附加了一个脚本,它实现了OnPointerHold接口。现在,当我尝试滚动较小的面板时,OnPointerHold事件被触发,由于某种原因阻止了滚动。

关于为什么会发生这种情况的任何想法?

我的真实情况是我需要一个可滚动的图像列表,如果玩家点击并且可以将其拖到场景上。抱着他们。我正在使用OnPointerHold来检测水龙头和水龙头。保持 - 如果已经过了0.7秒,则让玩家拖动图像。但是,我仍然希望播放器能够滚动列表。我愿意接受有关如何实现这一目标的其他建议。

提前致谢,保持良好的工作!

1 个答案:

答案 0 :(得分:2)

您只需要实现IPointerDownHandlerIPointerUpHandler接口。只要您不实现拖动或保持处理程序,拖放事件就应该直接传递到Scroll Rect

要将IPointerDownHandlerIPointerUpHandler用于您的目的,只需要从void OnPointerDown (PointerEventData eventData)开始计算时间,如果在给定时间内没有调用void OnPointerUp (PointerEventData eventData)(0.7秒) ,从Scroll Rect移出图像并附加到某些画布,并将其位置更新为指针位置。

此解决方案也很好,因为如果您开始拖动Scroll Rect,则会调用void OnPointerUp (PointerEventData eventData),这是好的,您希望在给定时间内拖动Scroll Rect(0.7秒)