原本是这样一个功能:
- 在编辑器下移动鼠标
- 在鼠标所在位置,从摄像机向世界空间发射一条射线
- 射线射中某个平面,在hit point处生成1个cube
产生的问题:
- 在编辑器下获取鼠标位置的函数:
Event.current.mousePosition
- 假如此时,显示器的分辨率为1920x1080,则左上角是(0,0),右下角是(1920,1080)。
但是,如果DPI不是100,那么此时的mousePosition
就会错误。
解决方案:
获取操作系统当前设置的DPI:
- 使用Unity的API:
Screen.dpi
得到一个dpi值 - 上述得到的值和系统设置的值有转换关系: 系统DPI = Unity DPI / 96 * 100。
- 比如,系统的DPI是100,则Unity DPI是96;系统的DPI是125,则Unity的DPI是120。
得到鼠标位置后,对鼠标位置进行等比例缩放。
eventMouse =