问题发生
使用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