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

本文介绍了Unity中UGUI的基本拖拽实现及其存在的问题,并详细解释了如何利用RectTransformUtility类中的ScreenPointToWorldPointInRectangle方法实现精准拖拽,解决了拖拽过程中UI位置偏移的问题。

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


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

    我们来看一下问题所在:


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

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


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


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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值