Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(196评价)
价格: 4019.00元
关于IPointerClick/IBeginDragHander....事件的问题
sdhexu发起了话题2017-06-22
6
回复
602
浏览

当实现了IBeginDragHander、IDragHander以及IEndDragHandler等接口后,我搞定了窗口及物品的拖拽功能。但是,我发现用鼠标的左键和右键都是可以拖动的....

研究了一下PointerEventData 参数,没有发现标示左键还是右键的地方....难道我需要用Input.GetMouseButton来检测吗??

另外,如果我实现的是IPointerClick事件,我也需要用GetMouseButton来判断是左键点击还是右键点击吗??我觉得这么做挺傻的,因为IPointerClick本事,就是一个鼠标点击事件,只要这个事件被触发,那一定是用户按下了鼠标的键,可是我在这里面的处理中,却还要再次判断鼠标的哪个键是否被按下,这岂不是很傻么....一定有别的方法的,对不对???

所有回复
  • siki 2017-06-22

    可以使用PointerEventData里面pointerId -1代表左键 -2 代表右键 -3代表中间

    还有-4条回复,点击查看
    你还没有登录,请先登录注册
  • sdhexu 2017-06-22

    感谢大神。。

    另外一个问题,我能再拖动的过程中强制终止拖动吗?或者在开始的时候,就不让它开始。例如:

    public void OnBeginDrag( PointerEventData ped )

             if(ped.pointerID == 2 )

                    // 如果发现用右键触发的。

                    ped.DoNotContiuneDrag();  

    }

     

    public void OnDrag( PointerEventData ped )

    {

               // 如果是用右键拖动的,这里不会响应,因为在BeginDrag里已经终止了。。

    }

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-06-22

    不用终止拖动,不过不想处理直接return就可以了

    • sdhexu 2017-06-23

      但是我直接return的话,他仍然会继续出发后续的事件对吗?比如虽然我在OnBeginDrag里面直接return了,但接下来仍然会出发OnDrag对吗??因为对于系统来讲,他还是认为你正在拖动,而没有终止拖动,只是你没有处理开始拖动而已。。。。。

      (0) 回复
    • siki 2017-06-23

      回复 @ sdhexu: 定义变量保存当前是哪个拖动的,然后再其他drag方法里面可以判断 是否处理这个事件

      (0) 回复
    还有-3条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!