You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MonoGame应用在高性能PC启动耗时1分30秒的排查求助

MonoGame应用在高性能PC启动缓慢的排查与解决

根据描述的情况,问题核心是MonoGame启动时对输入/摇杆相关注册表项进行了大量重复遍历操作,导致启动耗时剧增。以下是针对性的排查和解决方法:

  • 禁用冗余输入设备
    高性能PC通常会连接多个外设(手柄、摇杆、模拟控制器等),MonoGame的输入初始化逻辑会遍历所有注册的输入设备,残留的无效设备驱动或未卸载的外设会触发大量重复的注册表查询。

    1. 打开设备管理器,勾选"查看"->"显示隐藏设备"
    2. 禁用或卸载所有未在使用的游戏控制器、HID输入设备
    3. 重启PC后再测试启动速度
  • 清理输入设备注册表残留
    针对日志中提到的重复访问的注册表项,手动清理无效条目:

    1. 运行regedit打开注册表编辑器
    2. 定位到以下路径:
      • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID
      • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick
    3. 删除对应已不存在设备的子项(操作前务必备份注册表)
  • 优化MonoGame输入初始化逻辑
    若无法通过系统层面解决,可修改代码限制设备枚举范围:

    // 在Game.Initialize()前添加,过滤非必要设备
    var inputManager = new InputManager(this);
    inputManager.FilterDevices(device => device.DeviceType == InputDeviceType.GamePad);
    

    或者直接跳过部分输入设备的初始化,仅保留核心输入类型(键盘、鼠标)。

  • 使用性能分析工具精准定位
    用Visual Studio 2022的性能探查器进一步确认卡点:

    1. 启动性能探查器,选择"启动时的性能"
    2. 分析调用栈中耗时最长的操作,重点关注Microsoft.Xna.Framework.Input相关的方法
    3. 确认是框架枚举逻辑问题还是系统设备驱动异常
  • 回退MonoGame框架版本
    部分MonoGame版本在多输入设备场景下存在枚举性能缺陷,尝试回退到你在Surface平板上正常运行的框架版本,验证是否是版本兼容性问题。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:40:20