内置方法
在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
接口
通过接口来实现拖拽,关于拖拽的接口有三个IDragHandler,IBeginDragHandler,IEngDragHandler。其相比于Event Trigger的好处是可以直接通过eventData.pointerDrag这个属性来获得当前鼠标拖拽的这个对象。
补充接口可能失效的原因
在ui的制作过程中,可能会经常遇到想要点击触发的对象被上一层ui所遮挡覆盖的情况,导致鼠标无法被下一层检测到从而是无法实现我们想要的功能。此时我们可以使用CanvasGroup组件,将其blockRaycasts属性设置为false,那么鼠标就不会把这个ui物品当作一个碰撞物.文章来源:https://www.toymoban.com/news/detail-758501.html
文章来源地址https://www.toymoban.com/news/detail-758501.html
到了这里,关于unity常用的三种拖拽方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!