unity常用的三种拖拽方法

内置方法

在2d图片与3d场景中使用OnMouseDrag()的方法实现拖拽,而对于ui没有作用。

Event Tringger组件

通过添加Event Tringger组件实现,按下Add New Event Type添加新的事件类型,下拉菜单中显示不同的事件类型,包括鼠标进入离开按下松开点击拖拽等,以及拖拽结束后的EndDrag事件。他看上去和Button组件中的onClick()类似,提供了不同的处理ui的交互方式,我们通过代码书写对应的public方法,然后调用在EventTrigger组件当中。

补充坐标转换的易错点

如果需要物体跟随鼠标位置,则需要把鼠标的屏幕坐标转换为ugui坐标。我们有两种思路:一是直接把屏幕坐标赋值给transform.position,这种方式在ScreenSpaceOverlay模式下没问题,而在Camera模式下则会因为深度数值不正确二引发问题。另一种方式是通过RectTransformUtility.ScreenPointToWorldPointInRectangle方法将屏幕坐标转化为世界坐标然后再赋值给transform.position

f39c8f9d45a245e5a374f2c521b28a72.png

 接口

通过接口来实现拖拽,关于拖拽的接口有三个IDragHandler,IBeginDragHandler,IEngDragHandler。其相比于Event Trigger的好处是可以直接通过eventData.pointerDrag这个属性来获得当前鼠标拖拽的这个对象。

补充接口可能失效的原因

在ui的制作过程中,可能会经常遇到想要点击触发的对象被上一层ui所遮挡覆盖的情况,导致鼠标无法被下一层检测到从而是无法实现我们想要的功能。此时我们可以使用CanvasGroup组件,将其blockRaycasts属性设置为false,那么鼠标就不会把这个ui物品当作一个碰撞物.

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>