BetterGI脚本开发中实现鼠标滚轮操作的技术方案

BetterGI脚本开发中实现鼠标滚轮操作的技术方案

better-genshin-impact 🍨BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools For Genshin Impact better-genshin-impact 项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impact

背景与问题分析

在BetterGI项目(一个原神游戏辅助工具)的脚本开发过程中,开发者发现无法通过JavaScript脚本直接模拟鼠标滚轮操作。这限制了脚本功能的实现,特别是在需要滚动界面或选择特定选项的场景下。

核心问题在于BetterGI的C#后端代码中,GlobalMethod类没有将IMouseSimulator接口的VerticalScroll和HorizontalScroll方法暴露给JavaScript环境。这使得脚本开发者无法直接调用这些鼠标滚轮相关的方法。

典型应用场景

  1. 对话选项选择:当角色站在NPC(如蒂玛乌斯)或交互对象(如合成台)前时,游戏通常显示多个可交互选项。正常情况下需要通过鼠标或ALT键呼出鼠标来选择,但脚本无法直接模拟这一过程。

  2. 物品拾取筛选:在大量掉落物中,玩家可能只想拾取特定名称的物品,而直接按F键会拾取所有物品。

  3. 界面滚动:许多游戏界面需要滚动操作,如任务列表、背包物品列表等,缺乏滚轮支持使得脚本难以操作这些界面。

临时解决方案

虽然无法直接调用滚轮方法,但可以通过BetterGI提供的键鼠脚本功能间接实现滚轮效果:

向下滚动实现

await keyMouseScript.run(`{
  "macroEvents": [
    {"type":6,"mouseX":0,"mouseY":-120,"time":0}
  ],
  "info":{
    "name":"",
    "description":"",
    "x":0,
    "y":0,
    "width":1920,
    "height":1080,
    "recordDpi":1.25
  }
}`);

向上滚动实现

await keyMouseScript.run(`{
  "macroEvents": [
    {"type":6,"mouseX":0,"mouseY":120,"time":0}
  ],
  "info":{
    "name":"",
    "description":"",
    "x":0,
    "y":0,
    "width":1920,
    "height":1080,
    "recordDpi":1.25
  }
}`);

性能优化建议

当需要连续多次滚动时,建议采用以下优化方案:

  1. 批量添加滚动事件:在macroEvents数组中添加多个滚动事件对象,而不是多次调用脚本。

  2. 避免循环调用:尽量减少在循环中调用键鼠脚本的次数,以降低性能开销。

  3. 合理设置时间间隔:在连续滚动事件之间设置适当的时间间隔(time字段),模拟更自然的用户操作。

未来改进方向

从技术架构角度看,最理想的解决方案是在BetterGI的后端代码中将IMouseSimulator的完整功能暴露给JavaScript环境。具体可考虑:

  1. 在GlobalMethod类中添加VerticalScroll和HorizontalScroll方法的封装。

  2. 提供更简洁的JavaScript API,如mouse.scroll(delta)这样的调用方式。

  3. 考虑添加对滚轮速度、持续时间的参数控制,提供更灵活的滚动操作。

总结

虽然当前BetterGI的脚本环境缺少直接的鼠标滚轮API,但通过键鼠脚本功能仍可实现滚动效果。开发者可以根据具体需求选择适当的实现方式,同时期待未来版本能提供更完善的鼠标操作API,进一步简化脚本开发流程。

better-genshin-impact 🍨BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools For Genshin Impact better-genshin-impact 项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impact

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏秋武Vernon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值