UGUI揹包实现详解之一UGUI精准拖拽

    UGUI为开发者提供了许多实现交互的接口,包括拖拽类、点选类、鼠标指针类等,下面是最简单的UI拖拽实现方式:


    将上边代码挂在UI上运行,就可以实现最简单的拖拽效果。但是这种方式存在问题:鼠标开始点下时会出现UI位置弹跳,鼠标指针出现了位置偏移并不在UI上。

    我们来看一下问题所在:


    蓝点为UI的Pivot轴心点,假设红点为鼠标点下位置,由于UI的Position在UI正中位置,但是鼠标开始点下位置总不在UI正中间,所以就导致了UI拖动过程中的位置偏移。而这个偏移量就是上图绿色箭头所标记向量。

    现在我们使用另外一种拖拽方式——精准拖拽:


    UGUI为我们提供了一个类:RectTransformUtility,其中有UI屏幕座标转换为世界座标的方式:ScreenPointToWorldPointInRectangle,座标转换的好处是:


    无论UGUI的Canvas画布模式是哪一种,以上代码都适用。

    将此脚本挂在UI上,运行unity,现在UI的精准拖拽就实现了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章