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