我的问题的简化示例 - 我使用Unity UI创建以下内容:
一个大面板,包含一个较小面板列表。我已将Scroll Rect附加到容器游戏对象,从而使较小的面板可水平滚动。没问题,一切都按预期工作。
但是,我在每个较小的面板上都附加了一个脚本,它实现了OnPointerHold接口。现在,当我尝试滚动较小的面板时,OnPointerHold事件被触发,由于某种原因阻止了滚动。
关于为什么会发生这种情况的任何想法?
我的真实情况是我需要一个可滚动的图像列表,如果玩家点击并且可以将其拖到场景上。抱着他们。我正在使用OnPointerHold来检测水龙头和水龙头。保持 - 如果已经过了0.7秒,则让玩家拖动图像。但是,我仍然希望播放器能够滚动列表。我愿意接受有关如何实现这一目标的其他建议。
提前致谢,保持良好的工作!
答案 0 :(得分:2)
您只需要实现IPointerDownHandler
和IPointerUpHandler
接口。只要您不实现拖动或保持处理程序,拖放事件就应该直接传递到Scroll Rect
。
要将IPointerDownHandler
和IPointerUpHandler
用于您的目的,只需要从void OnPointerDown (PointerEventData eventData)
开始计算时间,如果在给定时间内没有调用void OnPointerUp (PointerEventData eventData)
(0.7秒) ,从Scroll Rect
移出图像并附加到某些画布,并将其位置更新为指针位置。
此解决方案也很好,因为如果您开始拖动Scroll Rect
,则会调用void OnPointerUp (PointerEventData eventData)
,这是好的,您希望在给定时间内拖动Scroll Rect
(0.7秒)