GameMaker跨Windows系统(Win7与Win10)拖拽速度不一致问题
GameMaker Studio 2拖拽在Windows 10卡顿的解决办法
可能的原因
- Windows 10的鼠标/触摸输入处理逻辑和Win7存在差异,高DPI显示器下
mouse_x/mouse_y可能出现坐标缩放偏差 - Step事件的执行帧率在Win10环境下可能被系统后台进程或设置限制,导致拖拽位置更新不及时
- 系统自带的鼠标/触摸增强功能(比如指针精度优化)干扰了输入响应的同步性
解决方案
1. 修复高DPI坐标适配
先检查项目的高DPI设置:
- 打开
File > Preferences > Windows > Graphics,勾选Enable High DPI Support - 若设置后仍有问题,手动修正坐标,替换Step事件代码:
// Step Event if (dragging) { var _dpi_scale = display_get_dpi_scale(); x = (mouse_x / _dpi_scale) - drag_offset_x; y = (mouse_y / _dpi_scale) - drag_offset_y; }
2. 改用鼠标移动事件同步位置
把Step里的拖拽逻辑移到Mouse Motion Event,只在鼠标移动时更新位置,避免Step帧率限制:
// Mouse Motion Event if (dragging) { x = mouse_x - drag_offset_x; y = mouse_y - drag_offset_y; }
保留原有的Create、Mouse Down、Mouse Up事件代码不变。
3. 关闭系统输入增强功能
- 打开Windows设置,进入
设备 > 鼠标 > 其他鼠标选项 - 在
指针选项标签页,取消勾选提高指针精度 - 触摸设备用户可进入
设备 > 触摸,关闭触摸灵敏度相关的增强选项
4. 锁定游戏运行帧率
在Create事件添加代码强制帧率稳定,避免Win10下帧率波动:
// Create Event dragging = false; drag_offset_x = 0; drag_offset_y = 0; window_set_vsync(true); fps_max = 60;
验证建议
优先测试高DPI修复方案,这是Win10和Win7之间最常见的差异点。如果无效,再依次尝试其他方案。
内容的提问来源于stack exchange,提问作者Chris Feng
相关产品推荐
相关产品推荐

