【Unity】不同DPI导致MousePosition不正确

在Unity中,当显示器DPI不为100%时,使用默认方式获取的MousePosition会出现误差。为解决此问题,可以通过Unity API获取DPI值,并将系统DPI与Unity DPI进行转换计算,然后对鼠标位置进行等比例缩放以修正。同时,创建可视化元素时也需要考虑DPI影响,使用DPI比例缩放元素尺寸。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原本是这样一个功能:

  • 在编辑器下移动鼠标
  • 在鼠标所在位置,从摄像机向世界空间发射一条射线
  • 射线射中某个平面,在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 =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值