【Unity】UGUI EventSystem OnDrag 因为适配的问题,使用delta的XY作为加数移动造成误差的问题

问题发生

使用EventSystem的OnDrag事件,希望实现一个移动画幅【下文以Image指代】的功能。
比如游戏设计标准分辨率为 1920x1080,那么我们给出的CanvasScaler的标准尺寸就是1920*1080
在OnDrag的监听中
使用 PointerEventData 中 delta 的数据,分别取x,y加到Image的localPosition上面。
这样就可以做出一个简单的跟随拖动移动Image的需求。

然而,当分辨率切换为非设计尺寸,
我们会发现,Image的移动经常不能跟随鼠标实际的移动距离进行移动。

问题解决

探究的过程不谈
这里提两个解决问题可能会用到的倍率参数

1、当前Canvas的Size与设计尺寸之间的倍率关系
获取游戏内的Canvas之后pixelRect的width和height记录的是当前的画布大小,
根据你的适配规则(就是Scaler里面Match的选用规则),做除数即可得倍率关系。

2、Canvas的RectTransform在不同的分辨率下面 localScale是有比例变化的
直接取用这个localScale,做一个合适的倍率乘数

我的问题解决用的是第一种倍率关系,各位酌情参考。

转载请标注 出自喵喵丸的Blog

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值